本人写一个软件,一个发送线程定时的去发送一些数据,想要提供一个功能,暂停和继续发送消息,用C#提供的
System.Threading.Thread.Suspend()来实现暂停,可是VS提示suspend()函数已经过时,网上查说是这种方法暂停会导致一些问题,求大神赐教,应该怎么样解决这个问题,怎么暂停一个线程和恢复一个线程的执行呢?灰常感谢啊~~~~看到的都回个帖吧

解决方案 »

  1.   

    前辈,们,当时教了我一个方法。线程开启后,不要去暂停和结束,可以定一个标志来是否执行线程里的处理。
    一下是例子,希望能给LZ到来启发。
     class ThreadDisClass
        {
            private Thread thread;        private bool flag = false;        public void StartThread()
            {
                flag = true;
                thread = new Thread(Func);
            }        public void EndThread()
            {
                flag = false;
            }        private void Func()
            {
                while (flag)
                {
                    //方法处理
                }
            }
        }
      

  2.   

    是的,suspend会在一个不可知的位置暂停,所以被抛弃了。解决方式就是楼上的办法,判断标志,在循环或者某些特定的地方,你认为可以暂停的地方,也可以用信号量等方式。
      

  3.   

    用标志位来控制线程,写个循环让他在里边sleep
      

  4.   

    “暂停”是个业务流程,不纠结在一个什么编程语句。比如说我“暂停看电视”,那么其实就是“停止看电视”。你按照业务流程设计,该停止的时候就直接return结束线程处理就行了。然后也还是按照业务流程设计,在某个事件(例如timer.tick)触发另一个程序方法,从当前状态参数开始处理接下来的其它数据就行了。
      

  5.   

    AutoEventReset
    自己查下怎么用吧