以前は単一インスタンス アプリケーションとして機能していた C# アプリケーションを開発しています。ここで、マルチユーザー アプリケーションに変更する必要があります。つまり、単一の MS SQL Server 2008 R2 データ ストアにアクセスしながら、GUI フロントエンドが複数のワークステーションで実行されます。
このアプリケーションが管理する作業の一部はキュー ベースです。つまり、各ユーザーが次に使用可能な作業項目を「取得」できる作業項目のプール (作業項目のリストは単一の SQL テーブルにあります) があります。私が達成したいことは次のとおりです。
- ワークアイテムがユーザーによって「取得」されると、最初のユーザーが作業を完了するまで、他のユーザーはどのような方法でも (読み取りを含む) アクセスできません。
- タイムアウト (ワークアイテムの取得中にユーザーが週末に家に帰る) とフリーズしたクライアント (ワークアイテムの取得中にステーションでリセットボタンが押される) を処理します。
私はこれがかなり一般的な質問であることを知っています(むしろ研究です)ので、詳細な解決策は期待していませんが、この件について読むための有用なリンク、ベストプラクティス、および/またはいくつかの文献を期待しています. 私はどこから始めればよいのか完全に迷っているので、どんな助けも本当に感謝しています。