朝。タスク中にGUIを更新する際に例外処理を伴うタスクを実行する
(しようとしています):複数のタスクを並行して実行しようとしています。各タスクは、forループ(第1タスク=行1-10、第2タスク=行11-20など)を使用してテキストファイルの特定のセクションを実行します。各行チェックの終わりに、イベントが発生し、GUIスレッドはUIを更新します。つまり、「X個の行がチェックされました」。
(スタック):私はこれを行う方法を理解していないにもかかわらず、例外を正しく処理できるようになります。限りイムとして認識し、私は
task.Wait();
または
task.WaitAll();
を呼び出す必要がありますが、それを呼び出すことによって、UIスレッドはそこまで待機し、任意のイベントは、私はちょうど得るUIを更新するために、タスクの内部で火災UIのキューを追加しました。
これを回避する方法を知っている人はいますか?
注:これがばかだが、スレッドに問題がある場合は、事前にお詫びします。
タスクとして、すべての例外をAggregateExceptionにバンドルします。もしtask.Waitall(); UIスレッドは、タスクが完了するか例外がスローされるまで待機するように見えます。
返信いただきありがとうございます。それは非常にきちんとしている、私はコードの最初のブロック(varタスク=タスク...)forループで囲まれている場合は、非常にきちんと、1つの側面は、各ループでタスク変数の名前を変更することが可能ですループ? –
@HansRudel:事実、もっと考えてみると、私はあなたの状況に適した別の方法が良いと思います。私はその例を更新しました。しかし、ヘンクの答えとほとんど同じです。 – porges
最後の質問が1つあります。 parallel.Forでは、それと呼ばれるメソッドに別のパラメータを割り当てることは可能ですか?最初のタスク=特定のファイルパス/行番号、2番目のタスク=別のファイルパス/行番号などです。 –