C# 后台线程运行期间WinForm UI响应缓慢
我设计了一个长期流程,如下结构:C# 后台线程运行期间WinForm UI响应缓慢,c#,multithreading,winforms,C#,Multithreading,Winforms,我设计了一个长期流程,如下结构: void OnButtonClick() { object initState = 0; Thread thread = new Thread(new ParameterizedThreadStart(DoLongTimeProcess)); thread.IsBackground = true; thread.Start(initState); } void DoLongTimeProcess(object initStat
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响应更快?您应该设置UI线程优先级。请考虑使用BuffTeaWror类来处理WiFrase中的后台任务。@ MRIDA:我应该让它默认。不想让我的UI几乎resource@NikolaosGeorgiou:无法在此处使用
BackgroundWorker
,因为在DoLongTimeProcess
结束时,它调用了一个异步方法,因此,BackgroundWorker
在此处结束其任务,就像我的线程那样。请提供一个简单的SSCCE