TcpListenerをStartした後にUseShellExecute=falseで子Processを開始し、TcpListenerをStopすると子Processを終了するまでTCPポートが永遠にListenのままになります。なおTcpListenerをStartする前に、子Processを開始すれば大丈夫です。
以下のコードではメモ帳を閉じるまでTCPポート10000がListen状態になり、クライアント側からアプリケーションデータの送信は正常に行えてしまいます。
なぜこうなってしまうのか、ご意見よろしくお願いします。
C#
1 static class Program{ 2 3 [STAThread] 4 static void Main() 5 { 6 TcpListener tcpListener = new TcpListener(new IPEndPoint(IPAddress.Any ,10000)); 7 tcpListener.Start(); 8 9 var proc = new ProcessStartInfo(); 10 proc.FileName = "notepad.exe"; 11 proc.UseShellExecute = false; 12 var process = Process.Start(proc); 13 14 tcpListener.Stop(); 15 16 process.WaitForExit(); 17 } 18 }
実行環境 .NET Framework4.8
回答1件
あなたの回答
tips
プレビュー