2016-10-11 11 views
-1

を使用しているとき、私は、次のタスクを開始する際のインタフェースをフリーズWPFアプリケーション(C#6.0、.NET 6.1、Visual Studioの2015、x64の)を持っているハングいくつかのタブで構成されています。上記のコードは、タブの1つにあります。 「計算」ボタンをクリックすると計算が(数分間)進行しますが、計算が進む間に他のタブを選択することはできません。上記のコードは非同期であると仮定し、DoScanの実行中にアプリケーションがフリーズする理由を理解できません。インタフェースは、長い実行中のタスク

ご迷惑をおかけして申し訳ございません。その後、新しいタスクにあなたがBigBox.DoScanを(実行する必要が非同期であなたのUIが応答するためには

チャールズ

+0

「BigBox.DoScan」とは何ですか? 'Task.CompletedTask'とは何ですか? –

+0

BigBox.DoScanは、SQL Server 2016データベースをスキャンするライブラリルーチンです。それは、異常なパターンを探している約2000のテーブルを調べます。 – CBrauer

+0

Task.CompletedTaskは、Microsoftタスクライブラリにあります。 – CBrauer

答えて

1

) 、これらが異なる上で発生するので、それは、のawaitキーワードで終了するのを待ちますUIがフリーズしないタスク:

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     await Scanner(); 
    } 

    private static async Task Scanner() 
    { 
     try 
     { 
      await Task.Run(() => 
      { 
       BigBox.DoScan(); 
      }); 

     } 
     catch (Exception ex) 
     { 
      SMErrorLog.WriteLog("Scanner error: ", ex); 
     } 
    } 
+1

ありがとうROM。これで正常に動作します。 – CBrauer

関連する問題