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