如何在SignalR回调方法中显示窗口?

时间:2012-10-31 08:48:10

标签: c# winforms multithreading signalr

我正在开发一个使用SignalR进行通信的简单聊天应用程序。 我想在收到来自其他用户的私人消息时显示MessageForm。 问题是,回调方法在不同的线程上运行,似乎将新表单循环与主表单合并出现问题,因此应用程序挂起 这是我的回调方法:

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

所以问题是如何创建表单以便它使用主窗体循环?

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案:) 我有点困惑,因为我使用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));
    }