fightrage 2017-09-05 01:14 采纳率: 66.7%
浏览 1141
已采纳

关于C#异步多线程编写时插入新线程的问题

如题,C#环境下,遇到问题如下,**假设我现在执行的线程依次为pro1,2,3,这时候我通过窗体控件新建了线程pro4并且想让他在pro3后运行(插入PRO4时PRO3未结束)请问该如何处理?**
具体解释: 我的线程创建函数在timealgorithm()方法中,会依次创建线程
整体处于go按钮的点击触发方法中,如下代码:
private void go_Click(object sender, EventArgs e)
{
...
while (judgeall(finish) == false)
{
timealgorithm();
}
...
//here
}

如果我在here处添加了字符回显于richtestbox控件,他会在线程开始之前立刻显示
(ps. 所以顺带求问如何监控多个重名线程状态是否结束,我是在一个循环里创建线程,创建代码如下:
Thread pro = new Thread(new ParameterizedThreadStart(proin[x].Threadbuild));
pro.Start(timet);


我个人由于基础是C语言,开始考虑使用死循环解决,用一个按钮结束循环,但是学习C#发现按钮触发方法中死循环会直接卡死框体,故求问解决方法

  • 写回答

4条回答 默认 最新

  • threenewbee 2017-09-05 01:17
    关注

    用事件等待
    定义一个成员变量
    AutoResetEvent mEvent=new AutoResetEvent(false);
    在线程3里面
    mEvent.Set();
    在线程4开头加上
    mEvent.WaitOne();
    则线程4停在这一行,直到线程3完成才继续执行

    更多信息,你可以查msdn

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 怎么获取下面的: glove_word2id.json和 glove_numpy.npy 这两个文件
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug