C#:是否可以取消linq2sql查询?

Svi*_*ish 5 c# linq-to-sql

是否可以取消linq2sql查询?就像我建立了需要一段时间才能运行的查询一样,我希望用户可以取消它。有人对此有什么好主意吗?

Svi*_*ish 2

所以,根据Richard Szalay的评论:

最好的选择是在后台线程中运行查询,并在用户单击“取消”时简单地取消订阅容器对象的事件。

我想我同意这是目前一个不错的解决方法。我希望看到框架中已经存在一些异步查询功能,但在此之前,这将是必须要做的。

还没有开始实现这个(必须先完成其他一些事情),但有一种方法可以工作:

  • 在工作线程中,在单独的查询线程中执行查询,然后加入该线程直到完成。
  • 当用户点击取消时,调用Interrupt工作线程的方法,然后工作线程将获取ThreadInterruptedException并停止等待查询线程完成。

稍后我制作时可能会添加一些代码。但我们会看看结果有多漂亮:p