也许这是一个被问了很多次的问题,但经过大量搜索和阅读后,我仍然不确定什么是最好的方法。
问题很简单:我的应用程序中一些数据库事务很长(几秒钟,几分钟)。这可能是两个原因:单个查询要处理大量数据或在一系列检索到的数据上执行多个查询。在许多情况下,两种情况都会出现。这会挂起用户界面,更糟糕的是他无法取消此操作。
解决方案似乎也很简单:将这些事务移动到另一个线程中,然后在需要时销毁该线程。
但是,互联网上的许多人反对杀死线程。他们建议使用DbCommand.Cancel(),这是一个线程安全的操作。但是,其他人说没有保证该命令将取消查询。甚至还有更大的问题:当用户点击时,UI线程如何知道哪个DbCommand正在执行?线程可能正在处理内存中的数据。
你能为这个问题提供任何帮助吗?
问题很简单:我的应用程序中一些数据库事务很长(几秒钟,几分钟)。这可能是两个原因:单个查询要处理大量数据或在一系列检索到的数据上执行多个查询。在许多情况下,两种情况都会出现。这会挂起用户界面,更糟糕的是他无法取消此操作。
解决方案似乎也很简单:将这些事务移动到另一个线程中,然后在需要时销毁该线程。
但是,互联网上的许多人反对杀死线程。他们建议使用DbCommand.Cancel(),这是一个线程安全的操作。但是,其他人说没有保证该命令将取消查询。甚至还有更大的问题:当用户点击时,UI线程如何知道哪个DbCommand正在执行?线程可能正在处理内存中的数据。
你能为这个问题提供任何帮助吗?