Основываясь на моем чтении и тестировании, с асинхронными сокетами сам сокет может быть передан с использованием объекта состояния (результат IAsyncResult), также если хранить сокет как частное поле, он будет захвачен методами обратного вызова.
Мне интересно, как IAysnResult хранится между BeginXXX и ReceiveXXX? Мне кажется, что после вызова BeginXXX и завершения метода объект состояния будет удален GC, если на него нет ссылки.
В случае частного поля, как личное поле распределяется между потоками? (Насколько я знаю, обратный вызов выполняется с использованием потока из пула потоков по умолчанию, который будет рассматриваться как новый поток.)
Большое спасибо, надеюсь, сами вопросы понятны.