gpt4 book ai didi

c# - 隐藏表单时,Form.Invoke() 不会运行,

转载 作者:行者123 更新时间:2023-11-30 17:58:16 26 4
gpt4 key购买 nike

如果我采用 C# 窗体 (WinForms) 并使其不可见:

MyForm.Visible = false;

然后在我创建的单独线程中;执行以下代码:

        this.Invoke(new MethodInvoker(delegate()
{
ProgressBar2.Visible = false;
}));

我的应用程序只会卡住而不会继续。如果 MyForm 可见,则线程中的上述代码运行正常。如果它不可见,代码会在读取“this.Invoke(new MethodInvoker(delegate()”) 行后立即停止运行。它不会出错,它只是坐在那里(我设置了一个断点来观察它并且它就在“this.Invoke(new MethodInvoker(delegate()”) 之后。

知道为什么当我的表单被隐藏时它不会执行吗?我该如何解决这个问题?我正在使用“this.Invoke(new MethodInvoker(delegate()”,因为我需要能够将 MainForm 上的进度条控件设置为可见(而且我必须在主 UI 线程之外的另一个线程上执行此操作)并且我想要无论表单是否可见,都要这样做。

最佳答案

当表单被隐藏时,我相信消息泵不再运行。我知道调用机制需要运行消息泵。

您可以通过将不透明度设置为 0 而不是可见性来解决此问题,但这有其自身的问题。

关于c# - 隐藏表单时,Form.Invoke() 不会运行,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468918/

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