问题描述:
如下图所示,当我在循环体里面使用异步任务的时候,发现他打印出来的都是 “我是异步任务:3”
for (int i = 0; i < 3; i++)
{
Task.Run(() => {
Console.WriteLine("我是异步任务:"+ i);
});
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf86d20ec0a3476a9d3c59ad04d7d0a0.png)
原因分析:
why:经过仔细分析:所谓异步任务,他的执行都是在异步处理,所以循环的时候他是不会有丁点卡顿的,这个时候,循环里面可以被视为没有任何的操作,那么他的循环速度是非常之快的,快到我们异步任务还在输出第一条打印文字的时候,循环已经结束了,造成输出的i值永远是3
解决方案:
![提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。](https://img-blog.csdnimg.cn/702ba496328e44d2afacfbe78d5f8428.png)