gpt4 book ai didi

c# - 从线程启动时模态弹出窗口失败——CSharp WPF

转载 作者:可可西里 更新时间:2023-11-01 09:56:34 30 4
gpt4 key购买 nike

要批量上传多个文件,我有一段 CSharp WPF 代码,它生成线程以允许并行上传文件。如果上传发生错误,将使用 MessageBox 弹出一条消息。这很好用。

但最近我们决定自定义 MessageBox 的外观。我发现当使用 ShowDialog() 打开我们新的自定义 WPF MessageBox 窗口时会抛出一个错误,提示无法启动 GUI。这仅在派生线程中的代码尝试打开自定义消息窗口时发生——当从主线程打开自定义消息框时我没有看到问题。

我的临时解决方法是捕获自定义对话框启动时发生的任何错误,并选择调用标准 MessageBox.Show() 来显示消息。行得通。

我不确定为什么可以使用标准 MessageBox.Show() 但它不适用于自定义窗口。有办法解决这个问题吗?

最佳答案

通常(在任何 GUI-API 中)不要从工作线程调用 GUI 函数,也不要在 GUI 线程上做繁重的工作。标准 MessageBox 在工作线程上工作的事实令人难过。

是的,你完全正确。当您的工作线程上发生某些需要显示给用户的事情时,向 GUI 线程发送通知(信号、事件,无论您的框架如何调用它)并在那里显示消息。

关于c# - 从线程启动时模态弹出窗口失败——CSharp WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102682/

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