0

通信に SignalR を使用する単純なチャット アプリケーションに取り組んでいます。別のユーザーからプライベート メッセージを受信するたびに MessageForm を表示したいと考えています。問題は、コールバック メソッドが別のスレッドで実行されており、新しいフォーム ループをメイン フォームとマージする際に問題があるように思われるため、アプリケーションがハングすることです。これが私のコールバック メソッドです。

private void MessageReceived(object sender, Client.MessageEventArgs args)
    {
        var form = new MessageForm();
        form.MessageReceived(sender,args);
        form.Show();
    }

問題は、メイン フォーム ループを使用するようにフォームを作成する方法です。

4

1 に答える 1

0

OK答えが見つかりました:) from.Invokeメソッドを使用してshowメソッドを実行していたため、少し混乱しましたが、フォームがコールバックスレッドで作成されていたため、明らかに機能しませんでした。その後、Invokeのメインを使用しましたメソッドとビオラ、それは魅力のように機能します:)コードは次のとおりです:

private void MessageReceived(object sender, Client.MessageEventArgs args)
    {

        var form = new MessageForm();
        form.MessageReceived(sender,args);
        Invoke(new Action(form.Show));
    }
于 2012-10-31T09:08:05.807 に答える