什么情况下出现死锁???(线程)
1,什么情况下出现死锁
2,以下代码 如何完善更好!
struct MyData
{
public string ip;
public string part;
public string time;
}
public void A()
{
Ds //数据源
foreach(DataRow dr in Ds.Tables[0].Rows)
{
MyData md = new MyData();
md.ip = dr["ip"].ToString();
md.part= dr["part"].ToString();
md.time= dr["time"].ToString();
ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), md); //线程池
}
}
private Object lockObj = new Object();
private void JanitorMethod(object ob)
{
MyData de_All = (MyData)ob;
Thread.Sleep(Convert.ToInt32(de_All.time));
lock (lockObj)
{
try
{
SocketService ss = new SocketService(de_All.ip, de_All.part, false);
StringBuilder sb = new StringBuilder("12312313");
ss.Write_DoWork(sb.ToString()); // 执行函数不用理睬
}
catch (Exception err)
{
throw err;
}
}
}