0

私のファイル ウォッチャー イベントは最初のファイルのみを読み取り、次のエラーが表示されます。別のプロセス。」

これが私のコードです:

   int? msgID;
        string dup ="";
        try
        {
            //---------read from file------------

            string block;

            using (StreamReader sr = File.OpenText(MsgsPath + "\\" + e.Name))
            {
                block = sr.ReadToEnd();
            }

「使用」は、開閉を自動的に処理する必要がありますよね?次に、このコードを使用して、処理されたファイルを移動します。

     File.Move(MsgsPath + "\\" + e.Name, MsgsPath + "\\Archive\\" + e.Name);
4

1 に答える 1

-1

このFileSystemWatcher Createdイベントは、他のプロセスが書き込み用にファイルを開くとすぐにトリガーされます。Changedそれに続いて、他のプロセスがファイルに書き込み、最後にファイルを閉じるときに、1 つ以上のイベントが続きます。

エラーを回避する最も簡単な方法は、ファイルにアクセスする前に少し待つことです。

Thread.Sleep(500);

より高度な方法は、最後の Changedイベントからしばらく待つことです。

于 2014-10-19T10:55:24.563 に答える