winform 多线程 UI假死问题
正在做一个winform程序,选中listview的一行,会有一个比较耗时的操作,操作结束后会修改10几个label的值,发现选择了listview某行后,经常UI假死,选择其他的记录会停顿滞后。我想新建一个线程去处理它,每个label控件都要写委托吗?10几个实在是太多了,有没有更好的办法统一做?不容易造成UI假死
------解决方案--------------------1 把方法这样写:
void Test(string msg)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(Logging2),msg);
}
else
{
Logging2( msg);
}
}
private void Logging2(string msg)
{
//----这里写你对UI的实际操作
}
2 另一线程调用:以 ThreadPool.QueueUserWorkItem为例
ThreadPool.QueueUserWorkItem(Somemethod);
3 关键在于
if (InvokeRequired)
{
this.Invoke(new Action<string>(Logging2),msg);
}