TcpCLient サーバーとして機能するクラスを実装しました。次のようになります。
{
[Export]
public class MessageListener
{
private readonly TcpListener tcpListener;
private readonly Thread listenThread;
private DataRepository DataRepository { get; set; }
private IEventAggregator EventAggregator { get; set; }
[ImportingConstructor]
public MessageListener(DataRepository dataRepository, IEventAggregator eventAggregator)
{
this.DataRepository = dataRepository;
this.EventAggregator = eventAggregator;
// TODO: Need to put proper Port number
this.tcpListener = new TcpListener(IPAddress.Any, 3000);
this.listenThread = new Thread(this.ListenForClients);
this.listenThread.Start();
}
private void ListenForClients()
{
this.tcpListener.Start();
while (true)
{
// blocks until a client has connected to the server
var client = this.tcpListener.AcceptTcpClient();
// create a thread to handle communication with connected client
var clientThread = new Thread(this.HandleClientComm);
clientThread.Start(client);
}
}
このリスナーは、シェル ビュー モデルにインポートされました。うまくいきます。
WPF ウィンドウを閉じると、MEF はこのオブジェクトを破棄しません。Windows は閉じますが、プロセスはまだ実行中です。この「サーバー」を適切にシャットダウンするにはどうすればよいですか? それは待っていvar client
ます..