【发布时间】:2018-01-09 20:14:50
【问题描述】:
我没有经常使用 async/await,而且我对它们并不完全满意。我正在尝试进行同步操作以异步运行。你能告诉我下面的代码 sn-p 是否有意义:
public static async Task<string> FileVersionAsync(string localFilePath)
{
FileVersionInfo versionInfo;
try
{
versionInfo = await Task.FromResult(FileVersionInfo.GetVersionInfo(localFilePath));
}
catch (SecurityException)
{
return "File Version Checker does not have permission to read file version";
}
catch (FileNotFoundException)
{
return "Unable to find configured file";
}
if (versionInfo.FileVersion == null)
return "N/A";
return versionInfo.FileVersion;
}
【问题讨论】:
-
不确定你想做什么。您编写的代码将与 async / await 一起使用,但不会异步执行。它会阻塞 FileVersionInfo.GetVersionInfo()。如果您希望代码真正异步执行,请将 Task.FromResult 替换为 Task.Run。
-
@Nick 不会使其异步。它会同步执行,但 parallel 在另一个线程上(这可能是 OP 想要的)。
-
如果存在,最好使用
GetVersionInfo的异步版本。 -
在所有情况下都返回一个字符串很糟糕。
-
代码编译@LarsTech。
标签: c# async-await