Làm cách nào để giải phóng khóa trên gdb?


11

Tôi gặp sự cố khi phát hành gdb của mình trong ArcGIS10. Công cụ của tôi hoạt động với một gdb cục bộ, nhưng tôi đã thất bại trong việc phát hành nó sau quá trình này. Trong Ag9.3 tôi có thể phát hành nó đơn giản bằng Marshal.ReleaseComObject (không gian làm việc), nhưng điều này không hoạt động trong AG10. Cũng phát hành tất cả FeatureCursors không giúp đỡ. Chỉ đóng toàn bộ ứng dụng "xóa" khóa. Có ai biết cách phát hành gdb của tôi và "xóa" khóa mà không đóng ứng dụng không?


Tìm kiếm trang web này cho "khóa cơ sở dữ liệu địa lý", một số trong số đó có thể giúp đỡ.
Chad Cooper

Tất nhiên tôi đã tìm kiếm các trang web trước đây. Nhưng thật không may, không có gợi ý nào giúp tôi hiểu. Tôi đã thử Compact-GP, nhưng điều này không mở khóa gdb. Nó dường như không phải là một khóa mồ côi, vì tôi không thể chỉnh sửa gdb trong ArcCatalog trước khi tôi đóng Ứng dụng của mình. Nhưng đối tượng nào tôi phải phát hành để mở khóa gdb của mình ngoài việc giải phóng không gian làm việc?
AnnemieK


1
Từ gis.stackexchange.com/questions/6230/ , có vẻ như bạn có thể đã gặp phải một lỗi. Nếu không có câu trả lời nào dưới đây được áp dụng, tôi sẽ theo dõi với bộ phận hỗ trợ kỹ thuật của Esri.
matt wilkie

Câu trả lời:


2

Tôi đã xem nhanh và tìm thấy thông tin về kịch bản khóa mà bạn dường như đang có. Trong ArcObjects 10 có tùy chọn SetWriteLock và FreeWriteLock.

hãy xem liên kết diễn đàn cụ thể là mẫu từ Lance Shipman từ Esri http://forums.arcgis.com/threads/36881-the-performance-fgdb-api-amp-arcobjects

Chúc vui vẻ, CDB


SetWriteLock và FreeWriteLock không có trong ArcObjects mà nằm trong API FileGeodatabase (Tách biệt các arcobject). Thư viện này có thể viết / giải phóng các khóa nhưng chỉ những khóa được tạo bằng thư viện này. Mẫu tên tệp là khác nhau (không bao gồm tên máy tính, v.v.).
mstaessen

2

Có được điều kiện này thật dễ dàng - tất cả những gì bạn cần là một đối tượng đang giữ một tham chiếu đến một cái gì đó cần không gian làm việc để tồn tại. Giống như một đối tượng tùy chỉnh chứa một tính năng chẳng hạn.

Khi bạn chắc chắn rằng bạn không có tài liệu tham khảo nào như vậy, hãy thử gọi GC.collect () để buộc trình thu gom rác vào chế độ dọn dẹp gần như xác định


2

Nếu bạn đang sử dụng con trỏ trong ứng dụng của mình, hãy đảm bảo sử dụng ComReleaser để quản lý thời gian tồn tại của con trỏ và tiêu diệt chúng khi bạn hoàn thành chúng. Nếu không họ có thể khóa DBMS của bạn. Tôi có thể sai nhưng tôi không gọi việc phát hànhComComObject trên không gian làm việc một mình sẽ xóa tham chiếu đến các con trỏ. Hãy xem bài đăng trên blog ESRI này ...

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


0

Tìm thấy ý tưởng từ http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007w000000

Các tệp .lock này bị xóa bất cứ khi nào bạn chạy công cụ địa lý nhỏ gọn

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++;
}
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.