C# 如何让执行完方法的线程继续工作

Jave.Lin 2011-08-19 08:15:54
如题。

其实我想比较实现类似:ThreadPool中的QueueWorkItem的功能。

即:线程执行完之后,不会销毁,而我下次调用时,就改变该线程的指定的ThreadStart或是ParamThreadStart指定的委托来执行不同的方法。类似这样的功能。

(上面有些名称打错了)
...全文
395 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirmuo 2011-08-20
  • 打赏
  • 举报
回复
在线程里写个死循环,再在循环开头用AutoResetEvent阻塞,有工作需要做的时候给AutoResetEvent设置信号,线程就会跑一次,跑完继续等待下一个工作。
灰阶 2011-08-20
  • 打赏
  • 举报
回复

private bool Mark = true;

private void button1_Click(object sender, EventArgs e)
{
while (Mark)
{
Thread.Sleep(1000);
}
}

类似的
Jave.Lin 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mirmuo 的回复:]

在线程里写个死循环,再在循环开头用AutoResetEvent阻塞,有工作需要做的时候给AutoResetEvent设置信号,线程就会跑一次,跑完继续等待下一个工作。
[/Quote]

非常感谢~
Jave.Lin 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]

我不知道楼主是不是故意调侃,你提问到ThreadPool这个的时候,就好象你故意骑驴找驴想看看搞.net编程的别人的笑话似地。
[/Quote]

因为我有些比较特殊的需求。所以我当时也没有去用ThreadPool。要对Thread的个数做个比较灵活的变化。

对不同时候,不同条件(这里的条件就很复杂的,千变万化)都可能会对Thread的个数控制。
  • 打赏
  • 举报
回复
我不知道楼主是不是故意调侃,你提问到ThreadPool这个的时候,就好象你故意骑驴找驴想看看搞.net编程的别人的笑话似地。
  • 打赏
  • 举报
回复
[Quote=引用楼主 linjf520 的回复:]
如题。

其实我想比较实现类似:ThreadPool中的QueueWorkItem的功能。

即:线程执行完之后,不会销毁,而我下次调用时,就改变该线程的指定的ThreadStart或是ParamThreadStart指定的委托来执行不同的方法。类似这样的功能。

(上面有些名称打错了)
[/Quote]

你了解过系统线程池这个概念么?ThreadPool本来就是这样的,当你下一次调用QueueWorkItem的时候,这方法本来就是重复使用线程!
gdstfox 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mirmuo 的回复:]

在线程里写个死循环,再在循环开头用AutoResetEvent阻塞,有工作需要做的时候给AutoResetEvent设置信号,线程就会跑一次,跑完继续等待下一个工作。
[/Quote]

+1 ,

做一个Notify方法让外部填数据,并设置AutoResetEvent处于非阻塞
LMAOhuaNL 2011-08-19
  • 打赏
  • 举报
回复
主线程 先分配一个线程 叫做“接受” 给该线程赋一个回调函数(就是执行完后执行的函数) 回调函数中 再分配一个“保存”线程 保存线程的回调函数中 弹出提示框 告之保存完毕

110,536

社区成员

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

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

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