本帖最后由 zhmvb 于 2009-07-03 11:40:10 编辑

解决方案 »

  1.   

    使用线程来看看.        private void button3_Click(object sender, EventArgs e)
            {
                DateTime _StarTime = DateTime.Now;
                Thread _Thread = new Thread(new ThreadStart(GetState));
                _Thread.Start();            while (true)
                {
                    TimeSpan _Span =DateTime.Now-_StarTime;                if (_Span.Seconds>10)   //这里设置时间
                    {
                        _Thread.Abort();
                    }
                    Application.DoEvents();
                }
              
            }               public void GetState()
            {  
                   string state = Led.GetState(DateTime.Now); 
            }
      

  2.   

    up1楼,学习.
    不用线程的话,用timer吧,intervel高为60*1000
      

  3.   

    最好不用线程,因为有无数次调用GetLedState,如果防到到线程中的话会创建很多个线程。另外在即时把GetLedStat防到线程中,如果GetLedStat正处于等待状态时运行_Thread.Abort(),实际上没没有结束Led.GetState(DateTime.Now)的等待状态,此时用frm.close()关闭程序后,他在操作系统中的进程中任存在,直到Led.GetState返回数据才真正的退出。
      

  4.   

    线成和无数次调用GetLedState没关系..
    如果你的GetLedState是非托管代码.可以考虑API来创建线程和终止线程.