我想了解如何發信號通知NetworkStore在等待時等待writeAsync readasync.I不確定從stream.readasync方法返回的機制如下。我想出了一種方法來發出完成的任務,以允許寫入流。這個代碼看起來是錯誤的,它會不會有更好的方法?等待的網絡流信號發送數據
async Task SocketStuff(TcpListener listener)
{
TcpClient client = await listener.AcceptTcpClientAsync();
NetworkStream stream = client.GetStream();
var buf = new byte[2048];
var readTask = stream.ReadAsync(buf, 0, buf.Length);
var signalToSend = SignalReadyToSendAsync();
var completetedTask = await Task.WhenAny(readTask, signalToSend);
if (completetedTask == signalToSend)
{
await stream.WriteAsync(someData, 0, someData.Length);
}
if (completetedTask == readTask)
{
// .....
}
}
async Task SignalReadyToSendAsync()
{
while (nothingToSend)
{
await Task.Delay(250);
}
return;
爲什麼不直接從發現它可用的代碼直接發送數據?發送和接收可以同時完成。 –