メソッドとのインターフェースがありますINetwork
:
Task<bool> SendAsync(string messageToSend, CancellationToken ct)
インターフェイスの 1 つの実装には、次のようなコードがあります。
public async Task<bool> SendAsync(string messageToSend, CancellationToken ct)
{
var udpClient = new UdpClient();
var data = Encoding.UTF8.GetBytes (messageToSend);
var sentBytes = await udpClient.SendAsync(data);
return sentBytes == data.Length;
}
残念ながら、SendAsync()
クラスのUdpClient
は を受け入れませんCancellationToken
。
だから私はそれを次のように変更し始めました:
public Task<bool> SendAsync(string messageToSend, CancellationToken ct)
{
var udpClient = new UdpClient();
var data = Encoding.UTF8.GetBytes (messageToSend);
var sendTask = udpClient.SendAsync(data);
sendTask.Wait(ct);
if(sendTask.Status == RanToCompletion)
{
return sendTask.Result == data.Length;
}
}
Task
返されないため、明らかにこれは機能しません。ただし、タスクを返すと、署名が一致しなくなります。SendAsync()
を返しますがTask<int>
、 が必要Task<bool>
です。
そして今、私は混乱しています。:-) これを解決するには?