遇到的问题:现在需要连接一个设备,如果设备不在线的话连接语句需要执行很久,十几秒钟,开线程也没用,会阻塞主线程,所以我就想找个方法判断一下如果连接语句执行超过3秒就认为设备不在线,不等了,去干别的去(winform)
http://bbs.csdn.net/topics/190039512
最后用的方法是3L的
1.加入using System.Threading命名空间;
2.先在类中定义一个成员变量:
Thread t;
System.Threading.Timer time; //线程计时器.
private void Form_Load(object sender, EventArgs e)
{
t=new Thread(new ThreadStart(start));
t.Start();
try
{
//TimerCallback是一个委托类型,第三个参数是开始计时,每四参数是间隔长(以ms为单位).
time = new System.Threading.Timer(new TimerCallback(method), null, 0,2000);
}
catch { }
}
void method(object o) //注意参数.
{
t.Abort(); //终止线程.
if (!t.IsAlive)
{//终止成功.
//终止计时器
time.Change(Timeout.Infinite, Timeout.Infinite);
MessageBox.Show("method");
}
}
void start()
{
MessageBox.Show("start");
}