Как я могу просто показать информацию об отмене, когда моя задача отменена? - PullRequest
0 голосов
/ 20 января 2020

Это мой код:

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();
                }
        }
    }
}

Я хочу изменить свой код так, чтобы он просто содержал информацию об отмене, а не сообщение, если задача выполнена, потому что, наконец, я буду знать, что моя задача завершена, если я получить данные с сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...