【发布时间】:2011-07-25 09:30:45
【问题描述】:
也许这是一个被问过很多次的问题,但经过大量搜索和阅读后,我仍然不太确定什么是最好的方法。
问题很简单:我的应用程序中的一些数据库事务很长(秒、分钟)。这可能是两件事的结果:要求单个查询处理大量数据或对一系列检索到的数据执行多个查询。在许多情况下,两者都在起作用。这会挂起用户界面,更糟糕的是他无法取消它。
解决方案似乎也很简单:将这些事务移至另一个线程,然后在需要时销毁该线程。
然而,互联网上的很多人都反对杀死线程。他们建议使用 DbCommand.Cancel() 这是一个线程安全的操作。但是,其他人说不能保证该命令会取消查询。更大的问题出现了:UI 线程如何知道用户点击时执行的是哪个 DbCommand?哎呀,那个时候线程可以处理内存中的数据。
你能解释一下这个问题吗?
【问题讨论】:
标签: .net sql-server database ado.net