5

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

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

4

2 回答 2

7

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

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

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

于 2012-05-30T17:56:22.667 回答
1

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

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

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

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

于 2012-05-30T18:35:10.860 回答