0

私は現在、スレッドの実行が完了したときに「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 スレッドで確実に行われるようにする方法はありますか?

ありがとう、オイヴィンド。

4

1 に答える 1