gpt4 book ai didi

c# - 如何从线程显示 Infragistics 的 UltraDesktopAlert

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:13 26 4
gpt4 key购买 nike

我面临很多天的问题。我有一个线程监听来自其他系统的通知。每当我通过套接字收到通知时,我想使用 Infragistics 的 UltraDesktopAlert 控件在警报窗口中显示它。这个类库里没有winform。

请告诉我如何使用线程显示它。样本在这里

  void tcpServerListenter_OnCommReceive(object sender, CommEventArgs e)
{
string xmlString = Encoding.UTF8.GetString((byte[])e.data);
try
{
XDocument xmlDoc = XDocument.Parse(xmlString);
var res = (from msg in xmlDoc.Descendants("consoleNotification")
select msg.Element("value").Value).FirstOrDefault();

this.notificationMsg = res;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

// here Alert window is not displaying.
ultraDesktopAlert1.Show("Notification", this.notificationMsg);
}

但是这段代码没有显示警告窗口。

我也检查了以下链接 How to update the GUI from another thread in C#?

但问题是我的类库中没有 Winform。每当我在套接字上收到通知时,我想显示警报窗口。

最佳答案

最简单的方法是保存 UI 线程的同步上下文并将 lambda 发送到 UI 线程...

在 UI 线程上,启动异步操作时/之前...

SynchronizationContext syncContext = SynchronizationContext.Current;

将其保存到执行 aSync 工作的类中,然后您希望发送您的代码以在保存的同步上下文中运行。

syncContext.Send((stateMsg) => ultraDesktopAlert1.Show("Notification", stateMsg), this.notificationMessage); 

请注意,如果您需要从 UI 线程检索 Current SynchronizationContext,则无法从非 UI 线程获取 UI 线程同步上下文。

关于c# - 如何从线程显示 Infragistics 的 UltraDesktopAlert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339903/

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