gpt4 book ai didi

c# - 带有 MySql 的 BackgroundWorker 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:51 24 4
gpt4 key购买 nike

我有一个方法可以在 for 循环 中将数据插入到 MySql 数据库中。

插入的数量可能很多,所以我的程序在插入期间卡住。

所以我想尝试将它放在 BackgroundWorker 中,但是它没有按计划工作...

一些插入后我得到一个异常,我的连接已经打开

这是我的做法:

if (dbPos.connOpen())
{
// inserts one row, works fine because data is present in db
dbPos.checkOut(prijs, wie);

// this works for a few inserts,
// but after a couple it will tell me my conn is already open
worker.RunWorkerAsync(); // inserts many rows
}
dbPos.connClose();

我的 BackgroundWorker 方法:

void worker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < chartList.Count; i++)
{
switch (this.countChart(i))
{
... Do work ... // insert rows
}
}
}

我的方法实际上会将值插入数据库:

using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
... parameters ....
cmd.ExecuteNonQuery();
}

那么我该如何解决这个神秘的问题呢?

最佳答案

问题是您正在关闭连接:

if (dbPos.connOpen())
{
// inserts one row, works fine because data is present in db
dbPos.checkOut(prijs, wie);

// This *starts* the work, but doesn't block
worker.RunWorkerAsync(); // inserts many rows
}
// This happens while the background work is still occurring
dbPos.connClose();

您应该将 dbPos.connOpen()connClose() 调用移动到 BackgroundWorkerDoWork 处理程序。这将允许连接在工作进行时保持打开状态。

关于c# - 带有 MySql 的 BackgroundWorker 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218723/

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