gpt4 book ai didi

.net - 取消数据库查询困境

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:26 24 4
gpt4 key购买 nike

也许这是一个被问过很多次的问题,但经过大量搜索和阅读后,我仍然不太确定什么是最好的方法。

问题很简单:我的应用程序中的某些数据库事务很长(秒、分钟)。这可能是两种情况的结果:要求单个查询处理大量数据,或者对一系列检索到的数据执行多个查询。在许多情况下,这两件事都在起作用。这会挂起用户界面,更糟糕的是他无法取消它。

解决方案似乎也很简单:将这些事务移到另一个线程中,然后在需要时销毁该线程。

然而,互联网上有很多人反对杀死线程。他们建议使用 DbCommand.Cancel() 这是一个线程安全操作。但是,其他人说不能保证该命令会取消查询。更大的问题出现了:当用户点击时,UI 线程如何知道正在执行哪个 DbCommand?哎呀,线程可以在那一刻处理内存中的数据。

你能阐明这个主题吗?

最佳答案

there is no guarantee that that command will cancel the query

这取决于供应商。有些提供商不支持取消命令,但 SQL Server 支持,所以这应该不是问题。当然这也取决于正在执行的命令的种类......

Even bigger problem is presented: how can UI thread know which DbCommand is executing when the user clicks?

DbCommand.Cancel 是实例方法,不是静态方法...因此您需要保留对正在执行的命令的引用,并在此实例上调用取消。

关于.net - 取消数据库查询困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com