아래 코드와 함께 : "이름 '리스너'가 현재 컨텍스트에 존재하지 않습니다."로컬에서 선언 된 변수가 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();
}
}
또는 마지막에 널 (null)을 확인합니다. TcpListener()에서 예외가 발생하면 어떻게됩니까? –
나는 내 초기 관찰을 확신 할 수 없지만, 어쩌면 나는 피곤하고 휴식이 필요하다. 어느 쪽이든, 방어 프로그래밍은 언제나 좋다. – BoltClock
@BoltClock 고침, 고마워. 당신의 관찰은 정확했습니다; 코드는 컴파일되지 않았을 것입니다 :) –