我从数据库中读出服务器列表,然后sock去连接,判断异常代码,然后把服务器IP 状态什么的多先程列在listview上
并且,如果不通,就给相关人员发短信现在发现发端信时,给出的ip是错误的,因为多线程操作时改变了变量
可是我加
lock(this)
{
}
也不行,请大家帮忙,代码片段如下:
xxxxx
xxxxx
得到数据库连接
while (MyReader.Read())
{
lock (this)
{
MonitorIP = MyReader["ServerIP"].ToString();
}
}
xxxx
xxxx
xxxx
StatusList.Items.Add(li);
for (; orders < this.StatusList.Items.Count; )
{
Thread oThread = new Thread(new ThreadStart(GetStatus));//在这得到状态并且发短信
oThread.IsBackground = true;
oThread.Start();
Thread.Sleep(100);
orders++;
}
public void GetStatus()
{
int temp = orders;
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sock.Connect(MonitorIP, MonitorPort);
sock.Listen(0);
}
catch (SocketException exp)
{
if (exp.ErrorCode != 10056)
{
ServiceStatus = 1;
strServiceStatus = "Timed Out";
App_Code.SMS.SendSMS(MonitorIP, "出现异常");//发短信
}
else
{
ServiceStatus = 0;
strServiceStatus = "isConnected";
}
}
}现在IP状态列在listview里,以及显示它的状态都正常,怎么发短信的时候就不行了呢??
请高手帮忙~ 谢谢.
并且,如果不通,就给相关人员发短信现在发现发端信时,给出的ip是错误的,因为多线程操作时改变了变量
可是我加
lock(this)
{
}
也不行,请大家帮忙,代码片段如下:
xxxxx
xxxxx
得到数据库连接
while (MyReader.Read())
{
lock (this)
{
MonitorIP = MyReader["ServerIP"].ToString();
}
}
xxxx
xxxx
xxxx
StatusList.Items.Add(li);
for (; orders < this.StatusList.Items.Count; )
{
Thread oThread = new Thread(new ThreadStart(GetStatus));//在这得到状态并且发短信
oThread.IsBackground = true;
oThread.Start();
Thread.Sleep(100);
orders++;
}
public void GetStatus()
{
int temp = orders;
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sock.Connect(MonitorIP, MonitorPort);
sock.Listen(0);
}
catch (SocketException exp)
{
if (exp.ErrorCode != 10056)
{
ServiceStatus = 1;
strServiceStatus = "Timed Out";
App_Code.SMS.SendSMS(MonitorIP, "出现异常");//发短信
}
else
{
ServiceStatus = 0;
strServiceStatus = "isConnected";
}
}
}现在IP状态列在listview里,以及显示它的状态都正常,怎么发短信的时候就不行了呢??
请高手帮忙~ 谢谢.
while (MyReader.Read())
{
lock (this)
{
MonitorIP = MyReader["ServerIP"].ToString();
}
StatusList.Items.Add(li);
for (; orders < this.StatusList.Items.Count; )
{
Thread oThread = new Thread(new ThreadStart(GetStatus));//在这得到状态并且发短信
oThread.IsBackground = true;
oThread.Start();
Thread.Sleep(100);
orders++;
}
}
Thread oThread = new Thread(new ParameterizedThreadStart(GetStatus));//在这得到状态并且发短
oThread.Start(MonitorIP);
-----------------public void GetStatus()
改成
public void GetStatus(object MonitorIP1)