1

C#で開発されたWinFormアプリケーションがあり、ローカルドライブでファイルを検索し、見つからない場合は作成し、ファイルにテキストを追加してから読み取ります。

同じマシン上の 2 つの異なるフォルダーからアプリの 2 つのインスタンスを実行する場合、これを同期するにはどうすればよいですか?

最初のインスタンスがファイルで作業しているときに、他のインスタンスが中断しないようにします。どちらも同じアプリケーションのインスタンスであるため、同じターゲット フォルダーでファイルの読み取り/書き込みを行うことに注意してください。

実装する必要があるスレッド化手法はありますか?

4

4 に答える 4

0

あなたはミューテックスを見たいと思うかもしれません。それらを使用すると、クロス プロセス ロックを実行できます。プログラムで一方のミューテックスが開いている間、もう一方のプログラムのミューテックスは待機します。

于 2013-05-17T17:46:38.193 に答える
0

最も簡単な解決策は、try catch で囲まれた StreamReader と StreamWriter を使用することだと思います。1 つのインスタンスがファイルを開いている場合、別のインスタンスが例外をスローします。

  try
  {
    using (StreamWriter sw = new StreamWriter("my.txt", true))
    {
      sw.WriteLine(dir.Name);
    }
  }
  catch
  {
      //maybe retry in 5 seconds
  }
于 2013-05-17T17:22:50.607 に答える