जीडीबी पर लॉक कैसे जारी करें?


11

मुझे आर्कजीआईएस 10 में अपना जीडीबी जारी करने में समस्या है। मेरा उपकरण एक स्थानीय gdb के साथ काम करता है, लेकिन मैं इस प्रक्रिया के बाद इसे जारी करने में विफल रहा। Ag9.3 में मैं इसे मार्शल द्वारा जारी कर सकता हूं। ReleaseComObject (कार्यक्षेत्र), लेकिन यह AG10 में काम नहीं करता है। इसके अलावा सभी FeatureCursors जारी करने में मदद नहीं करता है। केवल पूरे एप्लिकेशन को बंद करने से लॉक "डिलीट" हो जाता है। क्या कोई जानता है कि मेरे gdb को कैसे छोड़ा जाए और एप्लिकेशन को बंद किए बिना लॉक को "डिलीट" कैसे किया जाए?


"फ़ाइल जियोडेटाबेस लॉक" के लिए इस साइट को खोजें, उनमें से कुछ मदद कर सकते हैं।
चाड कूपर

बेशक मैंने इससे पहले साइट को खोजा था। लेकिन दुर्भाग्य से सुझावों में से किसी ने भी मेरी मदद नहीं की। मैंने कॉम्पैक्ट-जीपी की कोशिश की, लेकिन इसने जीडीबी को अनलॉक नहीं किया। यह भी एक अनाथ ताला नहीं लगता है, क्योंकि मैं अपने आवेदन को बंद करने से पहले ArcCatalog में gdb को संपादित नहीं कर सकता। लेकिन मुझे कार्यक्षेत्र जारी करने के अलावा अपने जीडीबी को अनलॉक करने के लिए कौन सी वस्तु जारी करनी है?
एनीमेके


1
से gis.stackexchange.com/questions/6230/... , ऐसा लगता है कि आप एक बग में चलाने हो सकता है। यदि नीचे दिए गए उत्तरों में से कोई भी लागू नहीं होता है, तो मैं Esri तकनीकी सहायता का पालन करूंगा।
मैट विल्की 16

जवाबों:


2

मुझे एक त्वरित नज़र मिली और लॉकिंग परिदृश्य के बारे में जानकारी मिली जो आपको प्रतीत हो रही है। ArcObjects 10 में एक SetWriteLock और FreeWriteLock विकल्प है।

विशेष रूप से Esri http://forums.arcgis.com/threads/36881-the-performance-fgdb-ap-amp-arcobjects से लांस शिपमैन के फ़ोरम लिंक पर एक नज़र डालें

मस्ती करो, सी.डी.बी.


SetWriteLock और FreeWriteLock ArcObjects में नहीं बल्कि FileGeodatabase API (आर्कबॉजेक्ट के अलग) में हैं। यह पुस्तकालय ताले लिख / जारी कर सकता है लेकिन केवल वही जो इस पुस्तकालय के साथ बनाया गया था। फ़ाइल नाम पैटर्न अलग है (कंप्यूटर का नाम, आदि शामिल नहीं है)।
mstaessen

2

इस स्थिति को प्राप्त करना आसान है - आपको केवल एक वस्तु की आवश्यकता है जो किसी ऐसी चीज का संदर्भ दे रही है जो जीवित रहने के लिए कार्यक्षेत्र की आवश्यकता है। एक कस्टम ऑब्जेक्ट की तरह जो उदाहरण के लिए एक फ़ीचर रखता है।

एक बार जब आप सुनिश्चित कर लें कि आपके पास इस तरह के कोई संदर्भ नहीं हैं, तो GC.collect () को कचरा संग्राहक को अर्ध-निर्धारक सफाई मोड में बाध्य करने का प्रयास करें।


2

यदि आप अपने आवेदन में कर्सर का उपयोग कर रहे हैं, तो कॉमर्स के जीवनकाल को प्रबंधित करने और उनके साथ काम करने पर उन्हें नष्ट करने के लिए ComReleaser का उपयोग करना सुनिश्चित करें। अन्यथा वे आपके DBMS को लॉक कर सकते हैं। मैं गलत हो सकता हूं, लेकिन मैं कार्यस्थल पर रिलीज़कॉमऑबजेक्ट को कॉल करने की बात नहीं करता हूं, केवल कर्सर को संदर्भ हटा देता है। इस ESRI ब्लॉग पोस्ट पर एक नजर ...

http://blogs.esri.com/Dev/blogs/geodatabase/archive/2008/12/18/Using-the-ComReleaser-to-manage-the-lifetime-of-cursors-in-.NET.aspx


0

Http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007w000000 से आइडिया मिला

"जब भी आप कॉम्पैक्ट टूल को जियोप्रोसेसिंग चलाते हैं तो ये .lock फाइलें हटा दी जाती हैं"

string[] lockfiles = Directory.GetFiles(project.Path, "*.lock",   SearchOption.AllDirectories);

if(lockfiles.Length > 0)
{
int lockCt = 0;
while (lockCt < lockfiles.Length)
{
 string inFGDB = System.IO.Path.GetDirectoryName(lockfiles[lockCt]);

 ESRI.ArcGIS.DataManagementTools.Compact compactProcess = new   ESRI.ArcGIS.DataManagementTools.Compact();

 compactProcess.in_workspace = inFGDB;

 geoprocessor.Execute(compactProcess ,null);

  lockCt++;
}
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.