private async Task GetImagesFiles(string radarImagesFolder)
{
DirectoryInfo lastRadarWrittenFolder = null;
var tt = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories();
if (tt.Length > 0)
{
lastRadarWrittenFolder = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories()
.OrderBy(d => d.CreationTimeUtc).First();
}
if (Directory.Exists(radarImagesFolder) && tt.Length > 0)
{
radarImages = Directory.GetFiles(lastRadarWrittenFolder.FullName, "*.png");
}
}
使用它
private async void Completed(object sender, AsyncCompletedEventArgs e, Stopwatch sw, string urlAddress)
{
await GetImagesFiles(textBoxRadarPath.Text);
}
问题是在GetImagesFiles方法中,在其名称GetImagesFiles上有一条绿色线警告:
严重性代码说明项目文件行禁止显示状态警告CS1998此异步方法缺少“await”运算符,将同步运行。请考虑使用“await”运算符等待非阻止API调用,或使用“await Task.Run(...)”在后台线程上执行占用CPU的工作。Weather D:\Csharp Projects\Weather\Form1.cs 415 Active
我想在继续执行其余代码之前等待获取文件。一旦radarImages数组不为空且其长度大于0,则继续执行其余代码。
1条答案
按热度按时间wbgh16ku1#
在
GetImagesFiles
中没有异步,所以你可以从它里面删除async Task
。这与Stephen Cleary在Task.Run
Etiquette Examples: Don't UseTask.Run
in the Implementation中的建议一致。我也会将setter从GetImagesFiles
中删除,得到的代码看起来像这样:和调用:
附言
虽然返回
null
作为标记可能会有代码味道,但是为了简洁,并且由于缺乏关于您正在使用的语言版本的知识,我使用了这种方法。