Цель Dispose
и друзей, чтобы освободить неуправляемые ресурсы, которые, как правило другие вещи, чем просто память, которые могут вызвать проблемы, если они остаются вокруг, пока сборщик мусора не получает вокруг, чтобы собирать объект. Если объект ведет себя правильно, ресурсы без памяти будут возвращены в конце, когда GC уничтожит объект, но это может быть долгое время. Например, FileStream
, который неправильно размещен, оставит файл открытым до тех пор, пока он не будет собран, что может препятствовать доступу других к файлу.
Как правило, если объект, о котором идет речь, имеет метод Dispose
, это, как правило, хороший признак, который вы должны назвать, когда закончите с ним.
Обратите внимание, что в случае многих объектов, таких как встроенные файлы и объекты сокетов, есть также альтернативный метод, называемый как-то вроде Close
. Нет необходимости звонить и Dispose
, и Close
- на самом деле, возможно, вы просто вызовите другого внутри. (Пример: TcpClient.Close
действительно просто вызывает Dispose
внутри)
нет. вам лучше использовать инструкцию 'using' вместо того, чтобы звонить вручную. http://stackoverflow.com/questions/75401/uses-of-using-in-c-sharp –
@ M.kazemAkhgary: Это действительно реально, когда вам нужно только ваше объект одним способом. В этом случае это не похоже. –
Комментарий об использовании 'use' не помогает, так как ваша переменная' client' использует методы переменной. Единственное, что я хотел бы сделать, это поставить SendToCodec и Disconnect в 'try' и' Dispose' в 'finally', чтобы убедиться, что это происходит, даже если выбрано исключение. – dman2306