对c#和任务非常陌生……试图找到正确的语法来将UDPclient封装到FromAsync(...)中,我似乎遗漏了一些参数...(不能使用ReceiveAsync,因为它应该适用于.NET 4.0)
public Task<byte[]> GetUDPmessageAsync()
{
byte[] data = new byte[100];
myUdpClient = new UdpClient(12000);
Task<byte[]> task = Task<byte[]>.Factory.FromAsync(myUdpClient.BeginReceive, myUdpClient.EndReceive,?,?);
}发布于 2013-02-08 06:51:18
我不认为你可以使用FromAsync,因为UdpClient.EndReceive接受了一个ref参数,这使得它与FromAsync的所有重载都不兼容。不过,您可以创建自己的扩展方法:
public static Task<byte[]> ReceiveAsync(this UdpClient client, IPEndPoint endpoint)
{
TaskCompletionSource<byte[]> tcs = new TaskCompletionSource<byte[]>();
AsyncCallback callback = ar => {
try
{
byte[] bytes = client.EndReceive(ar, ref endpoint);
tcs.SetResult(bytes);
}
catch(Exception ex)
{
tcs.SetException(ex);
}
};
client.BeginReceive(callback, null);
return tcs.Task;
}https://stackoverflow.com/questions/14762375
复制相似问题