日期:2014-05-17  浏览次数:21073 次

循环里写异步操作合适吗?
本帖最后由 dota3c 于 2014-01-17 12:36:42 编辑
没代码编辑器,我手打的,可能有错误,大概就是这个意思。

byte[] buffer;
foreach ( User myUser in ListUser)
{
  //通过TcpClient.NetworkStream.BeginWrite 异步向每个用户发送一大段数据
  
myUser.BeginSendData(buffer);
//。。。。
//.....

}

这样写合适不?里面的发送数据操作会按着顺序执行吗?还是写成同步发送数据比较好?

------解决方案--------------------
本帖最后由 caozhy 于 2014-01-17 13:29:49 编辑
循环不循环并不重要。
关键是你的逻辑。你需要先调用的先执行完或者控制同时并发的最大数量么?
------解决方案--------------------
并发,但不稳定,执行的顺序相当于随机
------解决方案--------------------
循环当然可以用异步,这样有避免主进程被阻塞的好处。你要看你每次发送的信息是不是互不干扰,如果是的话就可以异步,如果有存在需要前一个已发送下一个才能正确发送的情况,那就需要同步。一般来说,主进程有复杂操作时弄成异步都是正确的选择吧,。