我想这是一个简单的问题,我如何为每个线程创建一个新连接?
基本上我正在使用Windows服务来调用同一进程的3个实例,但是每个实例都必须有自己的连接。我正在使用它来抓住我的联系。public static MySqlConnection Connection { get; set; }
public static MySqlConnection OpenCon()
{
MySqlConnection masterOpenCON = new MySqlConnection(StaticStringClass.masterConString);
masterOpenCON.Open();
return masterOpenCON;
}
尝试解决此错误:已存在与此连接关联的打开DataReader
答案 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处理程序....