Почему не запускается моя функция асинхронной записи? - PullRequest
0 голосов
/ 19 июня 2020

Хорошо, я делал асинхронный IR C, и он отлично работает, за исключением одной проблемы. Клиент может писать, а сервер читать. За исключением того, что сервер не может писать, а клиент не может читать. Любая помощь?

https://github.com/theprogrammer4568/IRC

        async public static Task Receive()
        {
            while(true)
            {
                Byte[] bytes = new Byte[256];

                int data = await Server.stream.ReadAsync(bytes, 0, bytes.Length);
                string message = System.Text.Encoding.ASCII.GetString(bytes, 0, data);

                Console.WriteLine(message);
            }
        }


        async public static Task Send()
        {
            while(true)
            {
                Byte[] bytes = new Byte[256];

                string message = Console.ReadLine();
                Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

                await Server.stream.WriteAsync(data, 0, data.Length);
            }
        }

        async static Task Async()
        {
            await Task.Run(Read.Receive);
            await Task.Run(Write.Send);
        }

1 Ответ

1 голос
/ 19 июня 2020

Ваша функция Send никогда не запускается, потому что ваша функция Receive зацикливается вечно.

Даже если вы запускаете их в разных потоках с помощью Task.Run(), вы все равно await получаете результат Receive перед запуском Send.

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