【发布时间】:2011-03-09 04:57:41
【问题描述】:
我正在下载一个文件,并希望仅在下载完成后执行安装。我该如何做到这一点?似乎 FileSystemWatcher onCreate 事件会这样做,但这发生在不同的线程中,有没有一种简单的方法可以强制等待部分发生在同一个线程中。
到目前为止我的代码
FileSystemWatcher w = new FileSystemWatcher(@"C:/downloads");
w.EnableRaisingEvents = true;
w.Created += new FileSystemEventHandler(FileDownloaded);
static void FileDownloaded(object source, FileSystemEventArgs e)
{
InstallMSI(e.FullPath);
}
我查看了 SynchronizingObject 和 WaitForChangedResult,但没有得到可靠的工作示例。
【问题讨论】:
-
你是如何下载文件的?示例代码很好。
-
正在 UI 中进行下载。该代码会使这个问题变得混乱。只能说在触发这段代码的时候,下载动作已经开始了
-
文件系统监视器监视目录或目录中的文件的变化,当您完成文件的更改时它不会被监视。下载完成后必须处理您的下载代码。
标签: c# multithreading filesystemwatcher