ファイルジオデータベースAPI .NETラッパー:テーブル/フィーチャクラスがロックされているかどうかを確認する方法


10

私はファイルgdb API .NETラッパーを使用しており、(ArcObjectsを使用するのではなく)ニーズに非常によく適合しています。私がまだ理解していないことの1つは、テーブルまたはフィーチャクラス(fc)が書き込みを試みる前にロックされているかどうかを判断する適切な方法があるかどうかです。

私がしていることは、更新/挿入をtry / catchでラップすることであり、「ロック例外を取得できない...」になった場合、オブジェクトが他の何かによってロックされていることがわかります。

特定のテーブルまたはfcに書き込むことができるかどうかを確認するより良い方法がありませんか?


また、ファイルジオデータベースAPIだけでなく、理想的にはArcObjectsについても、この質問への回答に興味があります。
stakx 2013年

これらは2つの完全に異なるAPIなので、別の質問をすることをお勧めします。バウンティを移動できるかどうかはわかりませんが。
blah238 2013年

@ blah238に同意します。ArcObjectsの答えは、ISchemaLockInfo&ISchemaLockを使用してスキーマロックに関する情報を提供することです。Filegeodatbase API
Devdatta Tengshe 2013年

2
ロックは、ファイルジオデータベースAPIを通じて公開されません。書き込みを試みるか、書き込みロックを取得して、例外に対処する必要があります。
トラビス

2
Esri :: FileGDB :: Table :: IsEditableを試しましたか?
カークカイケンダル2013

回答:


1

このためのファイルジオデータベースAPIにフックがあるとは思いません。しかし、上記のように「..sr.lock」ファイルの存在についてファイルシステムをチェックすることにより、回避策を使用できます。

ファイルジオデータベースはファイルシステム上のフォルダーのように読み取られ、ファイルジオデータベース(_gdbテーブルに1つ)および/または任意の機能へのアクティブな(または終了していない...)接続を持つユーザーマシンごとにこれらのファイルの1つが存在します。現在接続されているクラス。

アクセス障害からエラーが返されるのを待つよりも速くなります。上記のMattBの回答とロックダッシュボードは、複数のユーザーにとって素晴らしいアイデアです。


0

私はArcObjectsを使用し、あなたが言及したtry / catchメソッドを使用しました。

私の場合、複数のユーザーがジオデータベースの同じフィーチャクラスのデータを読み書きする必要があります。「ロード画面」が表示され、データが使用中であることをユーザーに知らせます。その後、ロックが作成されるまで、ループは数秒おきにバックグラウンドで試行を続けます。

ロックを使用したもう1つの方法を以下に示します。ロックファイルを見るこの方法の使用は、実行したいこととは異なりますが、概念は同じであり、ロックのタイプやロックの所有者を特定する必要がある場合は、同様の方法を使用できる場合があります。 。興味のある方はこちらをご覧ください。

特定のロックファイル、それらが誰であるか、どのタイプのロックであるかなどを確認できるため、Windowsエクスプローラーでジオデータベース内を見ると、特定のロックファイルを監視するスタンドアロンの「ステータス」アプリケーションを作成できます。私たち全員が使用するフィーチャクラス。

この方法を使用すると、その機能クラスがロックされている(コンピューター名に基づいて)誰がどのタイプのロックを持っているかを、読みやすいダッシュボードからリアルタイムで確認できます。たとえば、「sr」(スキーマ)ロックが表示されている場合は、目次にフィーチャクラスが追加されていることがわかります。「rd」ロックは、フィーチャクラスから読み取っていることを意味し、「wr」ロックは、書き込み中であることを意味しますデータと「ed」ロックは、フィーチャクラスで編集セッションが開いていることを意味します。

これは、メンテナンスを実行して一瞥して、誰にも悪影響を与えないようにするときに非常に役立ちます。「不明」エントリは、予期しない誰かがフィーチャクラスを使用していることを警告し、さらに調査することができます。

これは私が使っているダッシュボードのスクリーンショットです。 FeatureClassステータスダッシュボード

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.