FileSystemWatcher事件过早引发

时间:2016-02-10 10:15:26

标签: c# .net filesystemwatcher

我正在尝试让两个应用程序通过一个简单的文本文件进行通信。 我的问题是我有一个Windows Store应用程序,其编写如下:

byte[] data = Encoding.UTF8.GetBytes(toSend);
var folder = KnownFolders.PicturesLibrary;
var file = await folder.GetFileAsync("orders");

using (var stream = await file.OpenStreamForWriteAsync())
{
      await stream.WriteAsync(data, 0, data.Length);
}

写作按预期发生,并且该行采用我需要的格式。 我在第二个应用程序中有一个FileSystemWatcher,它是一个简单的控制台应用程序。 观察者设置如下:

FileSystemWatcher watcher;            
watcher = new FileSystemWatcher(path);
watcher.Filter = "orders";
watcher.NotifyFilter = NotifyFilters.LastWrite;
var result = watcher.WaitForChanged(WatcherChangeTypes.Changed);

我尝试将过滤器的大小设置为测试。 如果调用该事件,我会像这样读取文件:

private String readFile()
{
    FileStream fileStream = new FileStream(this.path + @"\orders",    FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    StreamReader fileReader = new StreamReader(fileStream);
    String line = "";
    line = fileReader.ReadLine();
    return line;
}

我认为这么简单的用法。 我的问题是,当我的其他应用程序打开文本文件时,FileSystemWatcher会捕获修改,因此它会读取上一行。

有没有人知道如何“等待”写入文件?

谢谢!

解决 谢谢你们。 我通过创建一个小的递归函数尝试循环,我注意到我最多需要两个循环来创建正确的行,所以一切都很好。 再次感谢你。

0 个答案:

没有答案