C#中可以通过delegate取消一个方法吗?如果我在“正在处理”动画屏幕中按取消,我想立即停止方法。我通过代理使用异步调用。是否可以通过委托立即停止方法的执行?谢谢:)不-至少,不干净。(我没有将Thread.Abort包括为“干净的”。)您应该做的是有一种机制告诉委托人您正在尝试取消它。然后,您的代表需要偶尔检查取消标志并做出相应的反应。ParallelExtensions到处都内置了取消功能(特别是一个取消标记,它只允许适当的代码片段取消任务)。据我所知,它仍然是合作的。强制取消总是有破坏状态的风险。您可以使用System.ComponentModel.BackgroundWorker。它支持取消,因此您不必编写样板代码。客户端代码可以简单地调用CancelAsyn方法,在合适的时间和地点,您可以检查代码中的CancellationPending属性以确定客户端是否已取消操作并进行挽救。正如乔恩已经说过的,你不能告诉一个主题:“请现在停止”并期望线程服从。Thread.Abort不会告诉它停止,它只是“拔掉”它。我过去所做的是在线程代码中添加一系列“if(wehavetostop)”,如果用户按下“Cancel”,我将wehavetostop==true。它不太优雅,在某些情况下,“if”检查可能会“困难”,尤其是当您的线程运行无法拆分的“长”操作时。如果您正在尝试建立网络连接(这需要时间)并且您真的认为线程的“异常”终止不会导致任何损坏状态,您可以使用它,但请记住您不能相信涉及该线程的任何状态。以上是C#学习教程:C#中可以通过代理取消方法吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
