将在中同步运行DataReader.LoadAsync()

本文关键字:LoadAsync DataReader 运行 同步 | 更新日期: 2024-09-21 05:49:17

我用StreamSocket类编写了一个windows phone 8应用程序,但发现了一个奇怪的情况。我的代码如下

async void Connect() {
  await StreamSocketConnect();
  TryToSendAsync();
  ReceiveAsync();
}
async void ReceiveAsync() { 
                            //WriteLine("111");
   await DataReader.LoadAsync();
                            //WriteLine("222");
   DoReceiverCallBack();
}
async void TryToSendAsync(){
   await DataWriter.StoreAsync();
 }
void DoReceiveCallBack() { 
                             //WriteLine("333");
   ReceiveAsync();
                             //WriteLine("444");
}

按顺序,它应该遵循333=>111=>444=>222,但有时我会得到333=>111>>222=>444,尤其是在接收数据时。有时会同步吗??

将在中同步运行DataReader.LoadAsync()

是的,DataReader.LoadAsync可以同步完成。

套接字有自己的缓冲区;当数据到达套接字时,操作系统会为您缓冲它,直到您可以读取它。如果缓冲区中有足够的数据供LoadAsync完成,那么它将是同步的。