私は現在、スレッドの実行が完了したときに「WorkerFinished」イベントを呼び出す小さなバックグラウンド ワーカーを作成しています。ただし、問題は、このイベントのハンドラーで UI 要素を更新できないことです。スレッドが完了したら、メイン ASP ページでいくつかのボタンを有効にする必要があります。
だから、私はこれを簡単に行うことはできないことを知っていますが、これを回避する方法については少しの手がかりがありません.
関連するコードは次のとおりです。
public void Start(Dictionary<string, object> args)
{
m_thread = new Thread(() =>
{
m_progress = 0;
DoWork.Invoke(ref m_progress, ref m_result, args);
m_progress= 100;
m_isDone= true;
if( FinishedWork != null )
FinishedWork.Invoke(ref m_result, args); // Here goes
});
m_thread .Name = m_name;
m_thread .IsBackground = true;
m_thread .Start();
}
このことから、ASP ページのFinishedWorkイベントをサブスクライブし、[開始] ボタンを再度有効にする必要があります。
では、この呼び出しが UI スレッドで確実に行われるようにする方法はありますか?
ありがとう、オイヴィンド。