Вот так работает C # scoping.Это мешает в lock
операторах и try/catch
предложениях.Просто переместите объявление за пределы:
static void ReceiveSocketMsgs()
{
TcpListener listener = null;
try
{
listener = new TcpListener(IPAddress.Any, MainForm.GOHRFTrackerMainForm.socketPortNum);
...
}
catch (Exception ex)
{
//some exception (if you close the app, it will be "threadabort")
}
finally
{
if (listener != null)
listener.Stop();
}
}
Чтобы сохранить инициализацию слушателя внутри блока try
, инициализируйте переменную в null и проверьте, что перед вызовом Stop
.
Исправлена инициализация,Хорошо заметный BoltClock.