Это мой код:
private static void SendLoop()
{
CancellationTokenSource source = new CancellationTokenSource();
while (true)
{
Console.WriteLine("Enter a request: ");
string req = Console.ReadLine();
byte[] buffer = Encoding.ASCII.GetBytes(req);
_clientSocket.Send(buffer,0,buffer.Length,SocketFlags.None);
if (req != string.Empty)
{
var task = Task.Run(() =>
{
if(source.IsCancellationRequested != true)
{
var receivedBuffer = new byte[2048];
int rec = _clientSocket.Receive(receivedBuffer, SocketFlags.None);
byte[] data = new byte[rec];
Array.Copy(receivedBuffer, data, rec);
Console.WriteLine("Received : " + Encoding.ASCII.GetString(data));
}
else
{
source.Dispose();
}
},source.Token);
if (task.Wait(TimeSpan.FromSeconds(10)))
{
Console.WriteLine("Task end");
}
else
{
Console.WriteLine("task cancel" + task.Status);
source.Cancel();
Console.WriteLine(source.IsCancellationRequested);
_clientSocket.Close();
}
}
}
}
Я хочу изменить свой код так, чтобы он просто содержал информацию об отмене, а не сообщение, если задача выполнена, потому что, наконец, я буду знать, что моя задача завершена, если я получить данные с сервера.