如果这是多余的,请原谅,但是与此相关的所有问题似乎都指向不同的方向,我也是多线程编程的新手。
我的代码中有一个FileSystemWatcher
类,它监视创建的事件。看起来文件系统观察程序的创建事件启动了它自己的线程。因此,有时调用线程会在FileSystemWatcher
创建事件的被调用线程中启动的工作完成之前继续它的工作。我不想要这个。我的工作流程需要是单线程的,所以我想要实现的是在调用线程有机会恢复之前等待创建的事件完成它的工作。
伪代码:
main() {
FileSystemWatcher fsw = new FileSystemWatcher()
fsw.Path = ini.location;
fsw.Created += new FileSystemEventHandler(OnFileCreation);
fsw.EnableRaisingEvents = true;
main_engine.processDataToFile();
main_engine.processCreatedFile();
}
void OnFileCreation(object sender, FileSystemEventArgs e) {
// do some file processing
// takes time based on size of file and whether file is locked or not etc.
}
void processDataToFile() {
// do some data processing on received data and output to a file.
}
void processCreatedFile() {
// do not want this method to be called, unless OnFileCreation() finish it's work.
}
选择使用的原因FileSystemWatcher
是因为有时直接放置文件进行处理,而不是 main_engine 首先获取数据,并且它可以在多个位置工作,因此不想在FileSystemWatcher
可用时推出本土解决方案。