C#为每个线程分配MySql连接

时间:2011-07-21 01:34:18

标签: c# mysql

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

基本上我正在使用Windows服务来调用同一进程的3个实例,但是每个实例都必须有自己的连接。我正在使用它来抓住我的联系。

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

尝试解决此错误:已存在与此连接关联的打开DataReader

2 个答案:

答案 0 :(得分:2)

尽管我最初的冲动,但我不打算批评你的设计。鉴于您提供的代码段,我只回答您的问题:

[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;
}

希望这会有所帮助。阅读ThreadStaticAttribute以获取更多信息。哦,请记住,每个线程都有责任关闭自己的连接。

答案 1 :(得分:2)

如果从每个线程调用OpenCon(),它就可以工作......

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