嗨,我正在尝试创建一个水龙头包装器。ConnectTaskAsync很好,但是我在使用SendTaskAsync时遇到了一些问题。
public static Task ConnectTaskAsync(this Socket socket, EndPoint endpoint)
{
return Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, endpoint, null);
}
public static Task<int> SendTaskAsync(this Socket socket, byte[] buffer, int offset, int size, SocketFlags flags)
{
return Task<int>.Factory.FromAsync(socket.BeginSend, buffer, offset, size, flags, socket.EndSend, null);
}我收到的错误是在BeginSend下面有一个红色下划线,并显示消息Expected a method with IAsyncResult BeginSend
我哪里错了?
发布于 2013-07-05 00:27:46
您的FromAsync定义不正确。不幸的是,没有一个可以接受4个独立参数的overload of FromAsync (这对于BeginSend是必需的),所以您需要use a different overload
public static Task<int> SendTaskAsync(this Socket socket, byte[] buffer, int offset, int size, SocketFlags flags)
{
AsyncCallback nullOp = (i) => {};
IAsyncResult result = socket.BeginSend(buffer, offset, size, flags, nullOp, socket);
// Use overload that takes an IAsyncResult directly
return Task.Factory.FromAsync(result, socket.EndSend);
}https://stackoverflow.com/questions/17474639
复制相似问题