我正在使用这段代码,但遇到了一些关于使用 async 和 await 的问题。我之前制作了一个关闭“项目”的方法,我将它与异步委托异步使用,效果很好。我还创建了deserializeAsync()
一种在其他情况下使用的方法,也可以像宣传的那样工作。但是,我现在想为我的应用程序实现一个开放项目功能。我开始使用我在其他委托中使用过的 Async 辅助方法编写该方法,但我意识到当我需要通过文件浏览对话框提示用户输入信息时,我不知道这是否是一个好的解决方案。显示文件浏览对话框将冻结该方法的执行,我想它因此不再是异步的。这里的最佳做法是什么?我是不是该.Wait()
我的异步方法是这样的:
CloseProjectAsync().Wait();
并让 Open Project 方法同步执行所有内容,或者我会更好地等待我拥有的 Async 方法并使该方法“尽可能异步”?
private async Task OpenProjectAsync()
{
//get folderPath
if (m_OpenFileService.ShowDialog(null) != true)
return;
await CloseProjectAsync();
await Task.Run(() => {
string[] lines = File.ReadAllLines(m_OpenFileService.FileName);
});
await DeserializeAsync(something);
}