目前,我有一个全局static MySqlConnection连接;
,它是跨线程共享的(我知道这很糟糕),但我在打开新连接或关闭旧连接时会锁定,并且只有当线程是第一个已创建的或最后一个留下的(我还通过 static int MySqlConnected 确定这一点)。
目前由于某种原因它变得困惑,我的设置有什么问题?
最佳答案
你为什么要这么做?
.NET 运行时在保留连接池并根据需要以安全且无麻烦的方式透明地重新使用它们方面已经相当高效。在我看来,您似乎正在尝试完成框架已经提供的东西。当您需要执行查询时,只需打开一个新连接并使用它即可。运行时将为您处理剩下的所有事情。
此外,使用线程和静态变量很容易带来麻烦,导致代码经常以微妙的、不明显的方式失败。您似乎正在实现某种很容易出错的本土锁定机制。因此,除非您对多线程场景非常有经验,否则我会远离这种事情。
关于C# Mysql 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835175/