当前位置: 代码迷 >> C# >> 关于C#的线程池有关问题
  详细解决方案

关于C#的线程池有关问题

热度:47   发布时间:2016-05-05 04:15:54.0
关于C#的线程池问题
public void MessageManage()
        {
            WaitCallback callBack_Split;
            callBack_Split = new WaitCallback(SMS_AutoSplit);
            ThreadPool.QueueUserWorkItem(callBack_Split, Service_IsRunning);
        }
        private void frmMain_Load(object sender, EventArgs e)
        {
            try
            {
                
                EasyCreate.Data.Common.COBase.System_Init();
                WcfService_Init();
                Init_SMS();
                Service_IsRunning = !Service_IsRunning;
                MessageManage();
            }
            catch (Exception ex)
            {

            }
        }
        private void Start_Click(object sender, EventArgs e)
        {
            Service_IsRunning = !Service_IsRunning;
            //Init_SMS();
            //MessageManage();

            if (Service_IsRunning)
            {
                Start.Text = "开始";
            }
            else
            {
                Start.Text = "暂停";
            }

        }
public void SMS_AutoSplit(object state)
        {
        
            if (!(bool)state)
            {
                Thread.Sleep(5000);
            }
            while ((bool)state)
            {....}
       }

我希望通过按钮控制Service_IsRunning,线程池的参数object state 是不是在创建的时候确定的不能改变? 之前使用外部的全局变量Service_IsRunning第一次按下按钮发现不工作,但是第二次按下按钮不能恢复继续
             
------解决思路----------------------


你要暂停与继续?那就不能用这个。你得用MulaEventSet 
你所用的那个不叫暂停。那是退出了 while退出后,线程 也就退出了。
  相关解决方案