0
我寫了一個使用StreamSocket類的windows phone 8應用程序,但發現了一個奇怪的情況。我的代碼是如下將DataReader.LoadAsync()同步運行嗎?
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而尤其接收數據。有時會同步嗎?
也許這可以幫助一些東西:http://stackoverflow.com/questions/5095183/how-would-i-run-an-async-taskt-method-synchronously – Romasz
不涉及你的問題,但你應該真的避免使用'async void'方法(事件處理程序除外)。 – svick
任何你可以「等待」的東西都可以同步完成。 –