これは、実行時間の長いタスク中に UI がブロックされて問題が発生したコードのスニペットです。同じことをしているように見える他の例を見てきましたが、これはうまくいきません。シンプルなものだと思います。
私は何が欠けていますか?
public class ClipManager
{
async public Task<int> AddNewClipsAsync()
{
int rc = AddNewClips(); // does the work
return rc;
}
}
public partial class MainWindow : Window
{
private async void UpdateClick(object sender, RoutedEventArgs e)
{
// Check event to update library from WindowsMain.xml.cs
private async void UpdateClick(object sender, RoutedEventArgs e)
{
UpdateBtn.IsEnabled = false;
Console.WriteLine("Start of Update");
var cm = ClipManagement.Create();
int rc = await cm.AddNewClipsAsync(); // long running method
// UI unfreezes at this point
Console.WriteLine("After Update of Update");
await Task.Delay(30000); // just debugging code
Console.WriteLine("After delay");
LibraryDG.Items.Refresh();
UpdateBtn.IsEnabled = true;
}
}
}