c# for循环里开启线程,线程的循环i值被污染记录

问题描述:

如下图所示,当我在循环体里面使用异步任务的时候,发现他打印出来的都是 “我是异步任务:3”

for (int i = 0; i < 3; i++)
{
    Task.Run(() => { 
        Console.WriteLine("我是异步任务:"+ i);
    });
}

在这里插入图片描述


原因分析:

why:经过仔细分析:所谓异步任务,他的执行都是在异步处理,所以循环的时候他是不会有丁点卡顿的,这个时候,循环里面可以被视为没有任何的操作,那么他的循环速度是非常之快的,快到我们异步任务还在输出第一条打印文字的时候,循环已经结束了,造成输出的i值永远是3


解决方案:

提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值