fightrage 2017-09-04 17:27 采纳率: 66.7%
浏览 1353
已采纳

关于C#异步多线程编写时准确传参的问题

如题,如何做到在多个带参数线程依次执行时传参准确,我的具体情况如下:
线程执行函数中带有参数dotime,同时为保证异步顺次执行,使用了信号量,代码为
public class proinformation
{
...
public int dotime;
...
public async void Threadbuild()
{
await slim.WaitAsync();
...
Thread.Sleep(dotime * 1000);
...
slim.Release();
}
}

以上封装在一个类中,在窗体控件Form类中,有触发函数
proin[x].dotime = proin[x].lesstime;
pro = new Thread(proin[x].Threadbuild);
pro.Start();

如果X=1,2,3,相当于创建了3个进程,其dotime参数假设为2,4,5,但在我实际操作过程中发现问题
即本来应该是执行2S,4S,5S的进程的实际执行情况为5S,5S,5S,即重复最后一次执行
我个人认为原因可能在于传参时覆盖了前一参数,故有上述问题,我该如何准确传参?

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-09-05 00:25
    关注

    你说的对,你可以用带参数的线程的构造函数版本传给线程初始值。
    或者用ThreadStart让它立刻执行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘