我使用signalR将消息推送到服务器并向下推送到特定客户端.
当我发送消息时,接收客户端从我的signalR服务器发送一个ReceiveMessage函数调用,该函数映射到我的应用程序中的静态类函数.然后静态类尝试执行new Chat()(我的消息传递窗口类)以在接收端打开消息窗口.
这引发了 calling thread must be STA, because many UI components require this.
我之前曾与代表合作过简单的表单元素(比如更改文本框),但我不明白如何在这种情况下应用它.当我读到Invoke它时,会在某种形式的对象上调用它,这在我的情况下是不存在的?
TLDR; 如何从静态类函数调用创建和显示表单的新实例
使用当前GUI的线程调度程序.然后调用invoke.例子:
Application.Current.Dispatcher.Invoke(() => {
var win = new Window();
win.show();
});
Run Code Online (Sandbox Code Playgroud)