在后台线程运行期间,WinForm UI响应缓慢

时间:2014-01-21 10:25:44

标签: c# multithreading winforms

我设计了一个如下结构的长时间流程:

void OnButtonClick() {
    object initState = 0;

    Thread thread = new Thread(new ParameterizedThreadStart(DoLongTimeProcess));
    thread.IsBackground = true;
    thread.Start(initState);
}

void DoLongTimeProcess(object initState) {
    // ... Do something
    InvokeAsyncMethod(CallbackFunction);
}

void CallbackFunction() {
    object newState = AnotherFunction(); // Don't care, just a function to create state

    // A 'if' logic to call function again, ex: if (newState is int)
    DoLongTimeProcess(newState);
}

我的知情,线程在第一次通话时以InvokeAsyncMethod结束。因此,我无法控制稍后调用的方法的优先级。我不想在CallbackFunction中创建另一个线程,因为它已经属于另一个线程。

在上述过程运行期间,UI似乎响应缓慢,例如,用户想要取消该过程。如何让UI响应更快?

0 个答案:

没有答案