2009-09-16 11 views
3

VSTS 2008 + C#+ .Net 3.5を使用してコンソールアプリケーションを開発しています。ファイルへのアクセスのために、排他モードでファイルにアクセスすることができます。排他モードでは、他のプロセス/スレッドがファイルにアクセスするのをブロックします。ディレクトリをロックできますか?

私はディレクトリが不思議ですが、ディレクトリに排他的アクセスを可能にする組み込みのAPIやソリューションはありますか?「ロックされました」の効果はありますか?たとえば、あるスレッドがディレクトリを「ロック」すると、他のスレッド/プロセスはDirectory.GetFilesを呼び出すことができず、ディレクトリにファイルを書き込めず、ディレクトリからファイルを読み込むことができません。

答えて

1

それはあなたが同期するようにという名前のミューテックスを使用することができます妨げる可能性がある、独自のプロセスである場合。他のプロセスを守ることは非常に難しく、通常の方法は一時的な(隠された)dirに回避し、作業を行い、結果をコピー/移動することです。

+0

1.通常のアプローチは、一時的な(隠された)ディレクトリに回避し、作業を行い、結果をコピー/移動することです。 - 良いアイデア!もっと話したり、このトピックについてもう少し読んだりすることをお勧めしますか? 2.ディレクトリをロックするための組み込みのファイルシステムAPIがないことを確認したいのですか? – George2

+0

あなたのお手伝いを感謝します。ヘンク、私はあなたの返信に答えとしてマークしました。 – George2

1

私はあなたディレクトリのアクセス制御を設定し、完了したらそれを元に戻すことができます。ここを見て:

http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx

+1

あなたは私以外の他のすべてのユーザーのアクセスを削除することを意味しますか?もしそうなら、私は2つのスレッドを持つプロセスを作成すると、両方のスレッドが同じアカウントで実行されますが、このシナリオでは、スレッドの1つがアクセスできないようにするにはどうしたらいいですか? – George2

関連する問題