为每个线程分配MySql连接

本文关键字:MySql 连接 分配 线程 | 更新日期: 2023-09-27 18:03:13

我想这是一个简单的问题,我如何创建每个线程的新连接?

嗯,基本上我是使用一个windows服务调用在3个实例的同一进程,但他们每个必须有自己的连接。我现在正在用它来获取连接。

public static MySqlConnection Connection { get; set; }
    public static MySqlConnection OpenCon()
    {
        MySqlConnection masterOpenCON = new MySqlConnection(StaticStringClass.masterConString);
        masterOpenCON.Open();
        return masterOpenCON;
    }

试图解决这个错误:已经有一个开放的数据阅读器与这个连接相关联

为每个线程分配MySql连接

尽管我一开始很想批评你的设计。我只回答你给出的代码片段的问题:

[ThreadStatic]
private static MySqlConnection _connection;
public static MySqlConnection GetConnection() {
    // no need for locks on a threadstatic field, obviously.
    if (_connection == null) {
        _connection = new MySqlConnection(...);
        _connection.Open();
    }
    return _connection;
}

希望这对你有帮助。阅读threadstatiattribute获取更多信息。哦,记住,关闭自己的连接是每个线程的责任。

如果你从每个线程调用OpenCon(),它会工作…

否则,如果您使用连接属性,那么您需要将代码{ return Open(); }放入get处理程序....