以下のスニペットを試しました:
public Task RunUiTask(Action action)
{
var task = Task.Factory.StartNew(() =>
{
Dispatcher.Invoke(DispatcherPriority.Background, action);
});
return task;
}
private void OnCreateTask(object sender, RoutedEventArgs e)
{
var task = RunUiTask(() =>
{
for(int i=0;i<10;i++)
{
ResultTextBlock.Text += i.ToString();
}
});
task.Wait(); //(a) Program stopped here
ResultTextBlock.Text += "Finished"; //(b) Never called;
}
OnCreateTask(ボタンクリックイベントハンドラー)が呼び出されたときに、プログラムが(a)で停止し、(b)が呼び出されない理由がわかりませんでした。
注:Dispatcher.BeginInvokeを使用してプログラムを応答可能にすることができることはわかっていますが、ここではこれは私の関心事ではありません。
プログラムが(a)で停止する理由と、(b)が呼び出されない理由を誰かが知ることができますか?ありがとう。