我正在尝试让两个应用程序通过一个简单的文本文件进行通信。 我的问题是我有一个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会捕获修改,因此它会读取上一行。
有没有人知道如何“等待”写入文件?
谢谢!
解决 谢谢你们。 我通过创建一个小的递归函数尝试循环,我注意到我最多需要两个循环来创建正确的行,所以一切都很好。 再次感谢你。