关于C#的线程池问题

wish907 2015-04-08 10:02:00
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第一次按下按钮发现不工作,但是第二次按下按钮不能恢复继续
...全文
83 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wish907 2015-04-08
  • 打赏
  • 举报
回复
引用 3 楼 wyd1520 的回复:
你要暂停与继续?那就不能用这个。你得用MulaEventSet 你所用的那个不叫暂停。那是退出了 while退出后,线程 也就退出了。
后来懂了 我的会让while 结束 线程执行完了,对于概念没有搞清楚,while里面又设置了一个变量控制就好了,哎,copy得没动脑子
本拉灯 2015-04-08
  • 打赏
  • 举报
回复
你要暂停与继续?那就不能用这个。你得用MulaEventSet 你所用的那个不叫暂停。那是退出了 while退出后,线程 也就退出了。
wish907 2015-04-08
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
。。。。E ...那你就不要用参数,你定义 一人全局变量就可以了。
一开始没有使用参数形式直接使用Service_IsRunning while(Service_IsRunning)控制 线程 第一次按下按钮可以暂停,但是第二次不能继续执行了,调试线程池好像只能第一次定义的时候进去,后来都不会断点到
本拉灯 2015-04-08
  • 打赏
  • 举报
回复
。。。。E ...那你就不要用参数,你定义 一人全局变量就可以了。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧