东莞网站建设网站,在线生成html,网页设计师报考条件,网站搭建系统在很多操作中#xff0c;都会使用到异步线程#xff0c;具体怎样使用在这不说了#xff0c;网上有很好的说明#xff1b;本人通过Delegate.BeginInvoke实现异步调用#xff0c;完成后对UI控件进行设值等#xff0c;还有System.Timers.Timer都一样#xff0c;使用的是线程…在很多操作中都会使用到异步线程具体怎样使用在这不说了网上有很好的说明本人通过Delegate.BeginInvoke实现异步调用完成后对UI控件进行设值等还有System.Timers.Timer都一样使用的是线程池的线程。 在异步线程的执行方法中如果直接使用Control.Invoke转到当前的工作线程然后设置UI控件的值完成后继续执行异步线程未完成的代码不知道是异步线程没有被及时回收还是别的原因UI的句柄可能是一个指针引用在任务管理器中不断增加。应该是没有回收完成的异步线程的原因。如果使用Timer的Elapsed事件好像是没有减少的可能是Timer为全局性的吧不去考究了。如果是使用new MethodInvoker().BeginInvoke的调用过一段时间句柄会减少回收了。 具体的解决办法使用Control.BeginInvoke方法如果需要同步控件及返回值的不能用些方法Control.BeginInvoke的线程和上异步线程成了并行执行。是没有任何关系的两个线程了测试表明句柄没有增加至于内存增加是回收机制还没有执行所致Event引起的内存泄露不能算要处理转载于:https://www.cnblogs.com/Yjianyong/archive/2012/02/01/2334899.html