取消或停止异步委托调用

对于一般线程,我们可以 abort 来终止其执行,但由 beginInvoke 启动的委托调用,启用线程池线程执行, .Net 没有赋予我们直接停止其调用的方法,由此,我们必须做些工作来实现。

注意,试图操作线程池线程的想法是不合适的,线程池有 CLR 来管理更安全。

我们有以下方法来处理:

1 设置全局变量,作为信号,来通知终止操作。

参考 : http://www.microsoft.com/china/msdn/archives/library/dnforms/html/winforms08162002.asp

2 干脆升级到 .net Framework 2.0 ,使用 BackgroundWorker 类 , 在 2.0 里,可参考 WinFX Software Developer Kit 的相关帮助主题,

3 如果你还不打算升级到 .net Framework 2.0 ,那可以模拟实现 BackgroundWorker 类

参考 : http://www.code-magazine.com/article.aspx?quickid=0403071&page=1

注 ,以上的操作主要在委托函数实现部分支持终止的条件的检查 。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus