我目前正在编写一个小后台工作者,它在线程完成执行时调用“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 线程上?
谢谢,奥文德。