NLogネットワークターゲットのエンドポイントとなる小さなアプリを作成しています(TCPを介したデバッグメッセージの送信)このアプリは、ソケットを使用してサーバーを作成し、接続を受け入れます。このアプリケーションはウィンドウがなく、NotifyIconとApplicationContextを使用してシステムトレイで起動します。アプリケーションはポートでリッスンし、一意のエンドポイントから最初のメッセージを受信すると、新しいウィンドウを作成して表示します(これらのウィンドウには実際のデバッグメッセージが含まれます)ウィンドウを表示することはできましたが、表示されていますハングしているように、Socketsによって作成された非表示のスレッドから作成されているためだと思います。
test_ClientConnectedイベントから新しいWindows.Formを適切に作成するにはどうすればよいですか?
これがApplicationContextコードです
public NLApplicationContext()
{
NLServer test = new NLServer();
test.ClientConnected += test_ClientConnected;
test.Start();
}
void test_ClientConnected(object sender)
{
Form2 newForm = new Form2((NLClient)sender);
newForm.Invoke(new MethodInvoker(() => {newForm = new Form2((NLClient)sender);}));
newForm.Invoke(new MethodInvoker(() => { newForm.Show(); }));
Console.WriteLine("Connected");
/*if (((NLClient)sender).testy.InvokeRequired)
{
((NLClient)sender).testy.BeginInvoke(new MethodInvoker(((NLClient)sender).testy.Show()));
return;
}*/
}
これがプログラムのエントリポイントです
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new NLApplicationContext());
}
}