gpt4 book ai didi

c# - C#中的线程安全数据库访问

转载 作者:行者123 更新时间:2023-12-03 13:20:57 24 4
gpt4 key购买 nike

我有一个Winforms应用程序,可以完成一些繁重的数据库工作。它进行了大量的阅读和一些记录的插入。该操作最多可能需要30秒到一分钟,具体取决于数据库的大小。现在,我的程序运行正常。

我的问题是,当我的程序执行此操作时,我的UI线程被阻塞,直到完成数据库工作为止。我想将数据库函数放入线程中,但是,根据this MSDN article,ADO.NET不是线程安全的。

有没有办法在我的UI上提供进度条,或者是否有某种方式解决“ADO.NET线程不安全”的问题?也许写自己的类继承SqlDataReaderSqlConnection以使其成为线程安全的类。这有可能吗?

最佳答案

只需使用backgroundworker并确保每个线程(bgw)都创建自己的Connection对象。

对于链接的文章,请确保您具有一种并发安全的方式来生成 key 。让Db生成它们是最好的选择。

Is there a way to provide a progress bar on my UI



那很棘手。 Bgw可以使用ReportProgress很好,但是从正在运行的查询中获取它是一个问题。甚至行的总nr通常只在最后才知道。
但是您总是可以伪造它,用户不会介意/不知道。

关于c# - C#中的线程安全数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502862/

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