如果您在加载时抓住并移动窗口,我正在运行一些代码,这些代码将冻结。我不确定问题出在哪里,但我想我会发布我的代码,因为我在使用 async/await 时还很陌生,只是想知道我的逻辑是否有问题。我并不是说这是导致问题的原因,我刚刚搜索并看到了 UI 冻结和 async/await 经常出现的其他问题。任何帮助,将不胜感激。
private async void BuildChart()
{
DateTime date = DateTime.Today;
using (Database db = new Database())
{
await BuildActual(date, db);
await BuildActual(date.AddDays(1),db);
}
}
private async Task BuildActual(DateTime date, Database db)
{
List<TimeSeries> actualValues = await Task<List<TimeSeries>>.Factory.StartNew(() =>
{
try
{
var wind = DoStuff(date, db);
if (wind == null) return null;
if (wind.Count == 0) return null;
return MakeTimeSeries(wind);
}
catch
{
return null;
}
});
try
{
if (actualValues == null) return;
DoMoreStuff(actualValues);
}
catch (Exception ex)
{
Logger.Log(ex);
}
}
谢谢。