从 SignalR 客户端打开 WinForm

Open WinForm from SignalR Client

我用过这个示例 [GitHub SignalR 示例] https://github.com/nthdeveloper/SignalRSamples
它使用 winforms 作为 signalR 服务器
它使用两个客户端 winforms 和一个 javascript
它在文本框中附加客户端消息

   private void SimpleHub_MessageReceived(string senderClientId, string message)
    {
        //One of the clients sent a message, log it
        this.BeginInvoke(new Action(() =>
        {
            string clientName = _clients.FirstOrDefault(x => x.Id == senderClientId)?.Name;

            writeToLog($"{clientName}:{message}");
        }));
    }

我需要打开一个基于消息的表单

  private void SimpleHub_MessageReceived(string senderClientId, string message)
    {
        //One of the clients sent a message, log it
        this.BeginInvoke(new Action(() =>
        {
            string clientName = _clients.FirstOrDefault(x => x.Id == senderClientId)?.Name;
            switch (message)
            {
                case "form1":
                    Form1 frm = new Form1();
                    frm.Show();
                    break;
                case "form2":
                   Form2 frm = new Form();
                    frm.Show();
                    break;

                default:
                    // code block
                    break;
            }
          
          
        }));
    }

我已经尝试过表单打开并保持加载的代码我无法与之交互 缺少什么

因为 Form.Show 不会阻塞导致它立即超出范围。

您需要使用Form.ShowDialog。这将阻止允许表单的生命周期在超出范围之前完成。

话虽这么说,试试这个:

switch (message)
{
    case "form1":
        using(var frm = new Form1())
        {
            frm.ShowDialog(this);
        }
        break;
    case "form2":
        using(var frm = new Form2())
        {
            frm.ShowDialog(this);
        }
        break;
    default:
        // code block
        break;
}