多线程死锁问题 我有2条子线程,T1负责15秒读取数据库,T2 1小时读一次数据库,在T1,T2中分别对数据库操作部分加上了LOCK,但是在运行很长一段时间之后,软件会死掉。排除了程序部分,我认为是死锁导致的,加上了lock还是防治不了死锁?该如何是好 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lock对象是什么?表?变量?软件卡住,你可以考虑调试模式运行,卡住时点暂停看停止点。 你去MSDN上一下锁的对象问题, 不用固定字符串不用类型。否则 应该不是lock的问题,我1000多个线程读数据库加上lock都不会有问题,你就两个线程能出什么问题啊! lock(this){ 读取数据库数据!}如果不做任务措施的话T2就报错:数据库已打开!因为T1正在读取! public static SqlConnection Connection { get { if (connection == null) { string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord; connection = new SqlConnection(strConn); connection.Open(); } else if (connection.State == ConnectionState.Closed) { connection.Open(); } else if (connection.State == ConnectionState.Broken) { connection.Close(); connection.Open(); } else if (connection.State == ConnectionState.Open) { connection.Close(); string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord; connection = new SqlConnection(strConn); connection.Open(); } return connection; } }public static DataTable GetDataTable(string sql) { SqlDataAdapter sda = new SqlDataAdapter(sql, Connection); DataTable dt = new DataTable(); sda.Fill(dt); connection.Close(); return dt; }我是用的现成的数据库操作类 郁闷 使用Split excel导入碰到奇怪的问题,请高手指教 关于 Reflector 的紧急求助 请教 在C#.NET中实现Socket类似QQ聊天的编程,代码出错~ C#中调用API问题 跪求获取磁盘缓存大小、转速、使用时间、簇大小代码 C#的程序这么慢吗? 问一个高难度的问题,高手菜鸟都请进,up有分! 关于C# 和sql server的安装程序问题 水晶报表显示左边一半
软件卡住,你可以考虑调试模式运行,卡住时点暂停看停止点。
不用固定字符串
不用类型
。否则
{
读取数据库数据!
}
如果不做任务措施的话T2就报错:数据库已打开!因为T1正在读取!
{
get
{
if (connection == null)
{
string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord;
connection = new SqlConnection(strConn);
connection.Open();
}
else if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
else if (connection.State == ConnectionState.Open)
{
connection.Close();
string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord;
connection = new SqlConnection(strConn);
connection.Open();
}
return connection;
} }public static DataTable GetDataTable(string sql)
{
SqlDataAdapter sda = new SqlDataAdapter(sql, Connection);
DataTable dt = new DataTable();
sda.Fill(dt);
connection.Close();
return dt;
}
我是用的现成的数据库操作类