
C#如何响应多个事件?
我写了一个程序,里面有几个事件。其中一个事件里面代码的数据计算量很大,大概在几秒至1分钟左右才能完成计算。但是在这一段计算的时间,程序就像是死了一样。再触发别的事件的时候...
我写了一个程序,里面有几个事件。其中一个事件里面代码的数据计算量很大,大概在几秒至1分钟左右才能完成计算。但是在这一段计算的时间,程序就像是死了一样。再触发别的事件的时候完全没有反应。只有等这个计算的事件完成以后别的事件才能被触发。怎么解决这个问题?或者触发别的事件的时候让这个计算的事件暂停,别的事件完成以后,继续计算。不知道怎么实现?
多线程如何获得方法的执行结果呢? 展开
多线程如何获得方法的执行结果呢? 展开
4个回答
展开全部
楼主这个问题的解决方法,可以使用多线程来完成。
举一个例子,楼主在窗体中放一个lable控件,写一个for循环,将lable的值从0开始赋值,每一秒值加1。但是不管你逻辑再好,只要你这段代码放在主线程了,那么窗体都会出现假死状态,直到循环完成才会恢复,而最后你也只能看到lable的最后一个值。
解决这个办法,就需要使用多线程来实现,具体用法参考如下:
//子线程将执行的方法
public void a()
{}
//声明子线程
Thread t = new Thread(new ThreadStart(a)); //声明子线程时,他所执行的方法必须是无参数的,同时不用写括号
//子线程开始
t.Start();
根据楼主的情况,楼主可以将a()看做计算时间的方法,声明子线程、开始子线程,都写在那个事件里即可。
举一个例子,楼主在窗体中放一个lable控件,写一个for循环,将lable的值从0开始赋值,每一秒值加1。但是不管你逻辑再好,只要你这段代码放在主线程了,那么窗体都会出现假死状态,直到循环完成才会恢复,而最后你也只能看到lable的最后一个值。
解决这个办法,就需要使用多线程来实现,具体用法参考如下:
//子线程将执行的方法
public void a()
{}
//声明子线程
Thread t = new Thread(new ThreadStart(a)); //声明子线程时,他所执行的方法必须是无参数的,同时不用写括号
//子线程开始
t.Start();
根据楼主的情况,楼主可以将a()看做计算时间的方法,声明子线程、开始子线程,都写在那个事件里即可。
展开全部
这个只能用线程哟.如果你是winform ,推荐使用 BackgroundWorder 控件来执行新的线程.
这个控件有 开始事件,进度事件,和完成事件, 可以很方便的根据事件进度控制流程.
这个控件有 开始事件,进度事件,和完成事件, 可以很方便的根据事件进度控制流程.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用多线程,将需要一定运算时间的事件里的代码放到另外一个线程里面去运行,主线程还可以继续捕捉消息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
复习一下线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询