await / async を使用することが、レスポンシブ UI を確保するための最良のアイデアであると考えました。しかし、とにかくアプリケーションがフリーズするため、何か間違っているようです。
私がやろうとしていること:ボタンが起動され、長時間の操作を待つ必要があります。
public async Task CmdLoadExcel()
{
// läd die excel datei
string[] excelFiles = this.GetExcelFiles();
ExcelLoader eloader = new ExcelLoader();
await eloader.StartLoading(excelFiles);
foreach (DataSet elem in eloader.Tables)
{
this.ActivateItem(new ExcelViewModel(elem) { DisplayName = elem.DataSetName });
}
}
起動されたクラス:
public async Task StartLoading(string[] files)
{
foreach (string file in files)
{
Stopwatch swatch = new Stopwatch();
swatch.Start();
System.Threading.Thread.Sleep(5000);
FileInfo finfo = new FileInfo(file);
using (ExcelPackage package = new ExcelPackage(finfo))
{
// very long operation
}
} // For Each
} // StartLoading
それは単に睡眠中に停止し、何が間違っていたのかわかりません。