gpt4 book ai didi

c# - 以线程安全的方式创建新窗口

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:34 25 4
gpt4 key购买 nike

我正在使用 signalR 将消息推送到服务器并向下推送到特定客户端。

当我发送一条消息时,接收客户端从我的 signalR 服务器发送一个 ReceiveMessage 函数调用,它映射到我的应用程序中的一个静态类函数。然后静态类尝试执行 new Chat()(我的消息窗口类)以在接收方打开消息窗口。

这会抛出 调用线程必须是 STA,因为许多 UI 组件都需要这个。

我之前曾与代表一起处理过简单的表单元素(例如更改文本框),但我不明白如何在这种情况下应用它。当我阅读有关 Invoke 的内容时,它是在某种形式的对象上调用的,而在我的情况下不存在?

TLDR;如何通过静态类函数调用创建和显示表单的新实例

最佳答案

使用当前 GUI 的线程调度程序。然后调用调用。范例:

Application.Current.Dispatcher.Invoke(() => { 
var win = new Window();
win.show();
});

关于c# - 以线程安全的方式创建新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com