楼主这个问题的解决方法,可以使用多线程来完成。
举一个例子,楼主在窗体中放一个lable控件,写一个for循环,将lable的值从0开始赋值,每一秒值加1。但是不管你逻辑再好,只要你这段代码放在主线程了,那么窗体都会出现假死状态,直到循环完成才会恢复,而最后你也只能看到lable的最后一个值。
解决这个办法,就需要使用多线程来实现,具体用法参考如下:
//子线程将执行的方法
public void a()
{}
//声明子线程
Thread t = new Thread(new ThreadStart(a)); //声明子线程时,他所执行的方法必须是无参数的,同时不用写括号
//子线程开始
t.Start();
根据楼主的情况,楼主可以将a()看做计算时间的方法,声明子线程、开始子线程,都写在那个事件里即可。
这个只能用线程哟.如果你是winform ,推荐使用 BackgroundWorder 控件来执行新的线程.
这个控件有 开始事件,进度事件,和完成事件, 可以很方便的根据事件进度控制流程.
用多线程,将需要一定运算时间的事件里的代码放到另外一个线程里面去运行,主线程还可以继续捕捉消息
复习一下线程