Как стать автором
Обновить

Комментарии 8

Как в телесериалах -- первая серия заканчивается на самом интересном месте...
Когда вторая часть?

На этой неделе планирую закончить вторую часть.

"SynchronizationContext and ConfigureAwait", как всегда ждем-с.

Это реальная возможность, которую легко воспроизвести. Попробуйте эту программу на .NET Core:

Пропущенный код

using System.Net;
using System.Net.Sockets;

using Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Loopback, 0));
listener.Listen();

using Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(listener.LocalEndPoint!);

using Socket server = listener.Accept();
_ = server.SendAsync(new byte[100_000]);

var mres = new ManualResetEventSlim();
byte[] buffer = new byte[1];

var stream = new NetworkStream(client);

void ReadAgain()
{
    stream.BeginRead(buffer, 0, 1, iar =>
    {
        if (stream.EndRead(iar) != 0)
        {
            ReadAgain(); // uh oh!
        }
        else
        {
            mres.Set();
        }
    }, null);
};
ReadAgain();

mres.Wait();

Большое спасибо! Исправлено.

А зачем искать ссылку на оригинал, если хабр требует указать её в шапке поста, когда выбираешь перевод?

Я это понял после того, как оставил комментарий, а удалить его хабр уже не дал. Редко захожу, поэтому не со всеми деталями интерфейса знаком. Не интуитивно, что имя автора - это кликабельная ссылка на оригинал

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории