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

本文关键字:运行 方法 调用 何手动 结束 | 更新日期: 2023-09-27 18:35:42

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

编辑:有问题的方法在UI线程上运行

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

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

.NET Framework 中的取消通常是一种协作模型。 这意味着您的事件将请求取消,并且该方法会偶尔检查它是否应该取消,然后干净地退出。

这是通过框架中的CancellationTokenCancellationTokenSource类型处理的。 有关详细信息,请参阅 MSDN 上的取消主题。

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

使 UI 响应和操作可取消的选项:

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

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