У меня есть это превосходное приложение WPF, где пользователи, помимо прочего, загружают файлы, которые затем сохраняются в базе данных ( требование ).В любое время пользователь, запускающий это приложение, может щелкнуть гиперссылку на файл, чтобы открыть файл на своем локальном компьютере.Для этого я просто использую:
var process = Process.Start(tempPath);
Я десериализирую байты, хранящиеся в базе данных, и записываю временный файл в определенную папку.Еще одно требование состояло в том, что если пользователь вносит какие-либо изменения во временный файл, он может просто щелкнуть «Сохранить» в любом используемом приложении, после чего файл должен автоматически сохраниться в базе данных.Я использую FileSystemWatcher , чтобы узнать, был ли изменен временный файл, и следующее для отслеживания процесса:
await process.WaitForExitAsync(async () =>
{
if(!wasModified) return;
this.SetBusy();
var path = _workDocumentsOpened[work.Id];
_workDocumentsOpened.Remove(work.Id);
await work.SetDocumentAsync(path, work.DocumentFileName);
File.Delete(path);
this.SetNotBusy();
});
Это работает нормально большую часть времени.Однако, поскольку нет ограничений на тип файла (расширение), который пользователь может загрузить, если пользователь загружает файл и не настроил для него приложение по умолчанию, то отображается следующее диалоговое окно Windows:
Проблема заключается в том, что к этому времени Process.Start вернул null = (и до сих пор я не смогвыяснить, как определить, какой процесс выбран пользователем для открытия файла или операция просто отменена.
Любая помощь приветствуется