Потоки(threads) лучше завершать естественным образом
лучше использовать флаг, но можно и Abort(
MSDN)
Деструктор вызывается только когда происходит чистка мусора, при завершениии приложения машина просто возвращает память системе
When you are finished sending and receiving data, use the Shutdown method to disable the Socket. After calling Shutdown, call the Close method to release all resources associated with the Socket.
При закрытии потоков ввода/вывода вызывается метод flush, полезно если потоки буферизирующие
A call to Close is required for proper operation of a stream. Following a call to Close, other operations on the stream could throw exceptions. If the stream is already closed, a call to Close throws no exceptions.