gpt4 book ai didi

c# - Sql datareader已经关联高频轮询

转载 作者:行者123 更新时间:2023-11-29 21:11:24 25 4
gpt4 key购买 nike

我有一段代码,每 0.25 秒执行一次。尽管我每次都关闭正在使用的数据读取器,但它在前十次迭代中工作得很好,直到它因“数据读取器已与此连接关联”错误而崩溃。请求的速度会导致这种情况吗?我把它减慢到每 1.5 秒执行一次,但它仍然发生。除了这个 block 之外,此连接在其他任何地方都没有使用,所以我不确定为什么会发生这种情况。

            MySqlCommand cmd = new MySqlCommand(QueryString, connection);
var dataReader = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(dataReader);
dataReader.Close();
dataReader.Dispose();
cmd.Dispose();

最佳答案

最有可能的是,两个操作在某个时刻同时运行。由于每个连接都使用相同的连接,因此会遇到并发问题 - 默认情况下,一个连接仅支持单个打开的游标。需要发生的只是数据库查询花费的时间比计时器间隔长。

添加同步以确保两个请求不会同时运行 - 如果已经有一个请求待处理,则立即返回。

此外,请确保正确使用 usingtry...finally - 异常可能会阻止 dataReader .Dispose() 停止运行,这将使连接无法打开任何新游标,直到 GC 和终结器处理掉读取器。

关于c# - Sql datareader已经关联高频轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335302/

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