gpt4 book ai didi

c# - 预期使用IAsyncResult BeginSend的方法

转载 作者:行者123 更新时间:2023-12-03 12:05:37 24 4
gpt4 key购买 nike

嗨,我正在尝试创建TAP包装器。 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下带有消息的红色下划线,该消息带有IAsyncResult BeginSend的期望方法

我哪里做错了?

最佳答案

您的FromAsync定义不正确。不幸的是,没有一个overload of FromAsync可以接受4个单独的参数(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);
}

关于c# - 预期使用IAsyncResult BeginSend的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com