我有一个非常出色的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 =(到目前为止,我还没弄清楚如何检测选择了哪个进程用户打开文件或只是取消操作。
感谢任何帮助