限定线程的运行时间

来源:互联网 发布:业务数据分析流程图 编辑:程序博客网 时间:2024/04/27 14:09

遇到的问题:现在需要连接一个设备,如果设备不在线的话连接语句需要执行很久,十几秒钟,开线程也没用,会阻塞主线程,所以我就想找个方法判断一下如果连接语句执行超过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");
        }

0 0
原创粉丝点击