私が維持しなければならない古いアプリで法医学的考古学的調査を行っているときに、これに出くわしました:
これは、最近 .NET 4.0 に変換された WPF アプリケーションであり、このコードはバックグラウンド ワーカー内で実行されます。
if(bgWorker1.IsBusy || bgWorker2.IsBusy)
{
Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new System.Threading.ThreadStart(delegate { })
);
}
1 - no-op デリゲートを使用してスレッド (メイン GUI) を呼び出すと、どのような副作用が発生する可能性がありますか。他の 2 つのスレッドもメインの gui スレッドで呼び出しを実行しますが、優先順位を Normal 以外に設定するのはこの 1 つだけです (TreadStart ではなく Action を使用します)。
2 - このアプリケーションで奇妙なことにデッドロックに似たケースがあり、これが原因である可能性があると何かが教えてくれます。(見た目の理由もなく、優先度とメインのGUIスレッドをいじっています)。
ありがとう