我设计了一个如下结构的长时间流程:
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响应更快?