我喜欢新的 C# 5 的async和await,我想将它设置为我以前使用 async whay 的 Tcp 应用程序之一(不是 async & await,实际上是 Begin*,End*)
在我的应用程序中,每条消息都有响应,因此每次使用 BeginSend 时,您都会收到一条与您第一次发送的消息相关的消息。(让我们假设命令和它的报告)
我想添加一个名为RequestAsync的新函数,您可以发送消息并等待响应到来。让我展示一下用法
string response = await RequestAsync("hi");
在这种情况下,您将发送一条“hi”消息,然后代码等待与此相关的响应出现。
我在使用Task.Factory.FromAsync时遇到问题,所以我尝试了以下代码,我想确保性能与TaskFactory方式大致相同。
public async Task<IRequestResult> SendRequestAsync(IRequest request, string message)
{
IRequestResult result = BeginSendRequest(request, message);
while (!result.IsCompleted)
{
await Task.Delay(1);
}
return result;
}
BeginRequest 是我自己的方法。
此致,佩曼·莫尔塔扎维