在编程过程中经常会遇到耗时操作,这个时候如果不采取一些必要的异步操作,就会导致界面的卡死,这里以winform为例子,介绍三种方法防止界面卡死,对这几个方法稍加修改同样适用于wpf,silverlight等程序
首先给出一个函数模拟耗时操作
1使用委托+QueueUserWorkItem
delegate void ChangeInvoke(int num) ;
private void ChangeNum(int num)
{
MessageBox.Show(num.ToString());
}
private void DoSomeThing(object state)
{
int i=0;
for (int i = 0; i < int.MaxValue-1; i++)
{
i++;
}
ChangeInvoke change = new ChangeInvoke(ChangeNum);
this.Invoke(change,new object[]{i});
}
以下是通过QueueUserWorkItem异步调用
ThreadPool.QueueUserWorkItem(DoSomeThing);
其实很简单,也就是一句代码的事。