С приведенным ниже кодом я получаю: «Имя« слушатель »не существует в текущем контексте»Почему моя локально объявленная переменная не распознается в блоке finally?
Действительно? Зачем?
static void ReceiveSocketMsgs()
{
try
{
TcpListener listener;
listener = new TcpListener(IPAddress.Any, MainForm.GOHRFTrackerMainForm.socketPortNum);
listener.Start();
using (TcpClient c = listener.AcceptTcpClient())
{
using (NetworkStream n = c.GetStream())
{
string msg = new BinaryReader(n).ReadString();
BinaryWriter w = new BinaryWriter(n);
w.Write(msg + " received");
w.Flush(); // Must call Flush because we're not disposing the writer.
}
}
}
catch (Exception ex)
{
//some exception (if you close the app, it will be "threadabort")
}
finally
{
listener.Stop();
}
}
Или проверить нуль в конце концов. Что произойдет, если исключение выбрано из TcpListener()? –
Я не настолько уверен в своем первоначальном наблюдении на самом деле, но, может быть, я просто устал и нуждаюсь в перерыве :) В любом случае, защитное программирование всегда хорошо. – BoltClock
@BoltClock Исправлено, спасибо. Ваше наблюдение было правильным; код не был бы скомпилирован :) –