чтобы он загружался асинхронно.

ружаю файл и хочу выполнить установку только после завершения загрузки. Как мне это сделать? Похоже, событие 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, но не получил надежного рабочего образца.

Ответы на вопрос(4)

Ваш ответ на вопрос