目前正在与 Oracle 合作,但也需要 MS SQL 的解决方案。
我有一个 GUI,允许用户生成将在数据库上执行的 SQL。这可能需要很长时间,具体取决于它们生成的搜索。我希望 GUI/App 在此搜索期间做出响应,并且我希望用户能够取消搜索。
我正在使用后台工作线程。
我的问题是,当用户取消搜索时,我无法中断对数据库的调用。它一直等到完成,然后它可以轮询“CancelationPending”属性。这不仅会浪费数据库上的资源,还会给我的代码带来问题。
如果用户在很长的查询上点击“搜索”,然后点击“取消”,然后再次点击“搜索”——第一次搜索仍在数据库中进行。当他们再次点击搜索时,后台工作人员仍然很忙。我对这个问题的唯一解决方案是创建一个新的后台工作人员。
这似乎是一种非常丑陋的做事方式。数据库继续工作我正在创建后台工作人员的新实例....当我真的想停止数据库调用并重新使用同一个工作人员时。
我怎样才能做到这一点?