如何手动结束当前正在运行的方法调用?

时间:2012-05-30 17:53:57

标签: c#

正如标题所说,我调用了一个从数据库开始加载的方法。 如果引发了特定事件,我希望过早退出该方法而不等待它完成加载。

编辑:相关方法在UI线程上运行

2 个答案:

答案 0 :(得分:7)

无法(干净地)从该方法外部破坏性地取消方法。

.NET Framework中的取消通常是一种合作模式。这意味着您的事件将请求取消,并且该方法将偶尔检查是否应取消然后彻底退出。

这是通过框架内的CancellationTokenCancellationTokenSource类型处理的。有关详细信息,请参阅有关Cancellation on MSDN

的主题

答案 1 :(得分:1)

如果你在UI线程上执行长时间运行的方法,那么几乎没有任何内置的方法可以帮助阻止它。 UI线程也无法监听任何事件(因为它在方法执行时被阻止)。

您可以选择让UI响应和操作取消:

  • 在单独的线程上执行长时间运行的方法
  • 尽可能使用异步执行操作。

要取消 - 您可以通过终止/关闭执行操作的连接/文件来取消某些操作。请注意,大多数IO操作不保证此操作将立即终止该方法。