我可以通过C#中的代理取消方法吗?

Mar*_*lis 6 c# delegates

如果我在"处理"动画屏幕中按取消,我想立即停止一个方法.我通过代理使用异步调用.是否可以通过委托立即停止执行该方法?

谢谢 :)

Jon*_*eet 9

不 - 至少,不干净.(我不包括Thread.Abort"干净".)你应该做的是有一种机制告诉代表你正试图取消它.然后,您的代表需要偶尔检查取消标记并做出相应的反应.

Parallel Extensions在整个地方内置了取消(特别是取消令牌,只允许适当的代码片段取消任务).据我所知,它仍然是合作的.强制取消将永远存在腐败状态的风险.


Meh*_*ras 5

您可以使用System.ComponentModel.BackgroundWorker.它支持取消,因此您不必编写样板代码.客户端代码可以简单地调用CancelAsyn方法,您可以在代码中检查CancellationPending属性,以确定客户端是否已取消操作并进行挽救.