gpt4 book ai didi

c# - 跨线程隐藏方法

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

我试图从辅助线程隐藏在主线程上创建的表单,但是当我调用 hide 方法时,我显然遇到了跨线程问题。我是新手,并不知道如何纠正这个问题。如果它正在更改在主线程上创建的内容,我总是只创建一个委托(delegate)来调用我的方法,但我不知道如何在此处为内置隐藏方法执行此操作。如果您需要更多信息,请告诉我。

代码:

public partial class MainForm : Form
{
ControlPanelForm m_controlPanel = new ControlPanelForm();
// ....
void MeterThread()
{
while (true)
{
// ....
if (EMOdetected)
{
m_controlPanel.Deinitialize();
m_controlPanel.Hide(); // **** //
}
}
}
}

基本上,我的 MainForm 会调出一个控制面板表单来完成一些工作。在后台我有一个线程正在运行并检查东西,其中之一是紧急关闭,此时我想关闭我的控制面板然后隐藏它。

如果我尝试在此处调用它,

m_controlPanel.Invoke(new EMOHandler(m_controlPanel.Hide));    // **** //

当我调试它时,它看起来并没有执行任何操作。它似乎只是传递命令。同样,我是新手,所以欢迎任何解释。

最佳答案

没有理由检查 InvokeRequired 或创建匿名方法。简单的写

mainForm.Invoke(new MethodInvoker(mainForm.Hide));

关于c# - 跨线程隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375185/

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