gpt4 book ai didi

multithreading - 问题: InvokeRequired is always False when trying to show the form in c# windows application

转载 作者:行者123 更新时间:2023-12-03 13:15:47 27 4
gpt4 key购买 nike

我正在尝试实现表单的单个实例。因为我的应用程序全部是根据一些运行时值动态隐藏和显示不同的表单。

当我想显示来自类文件的Trainee_Login表单时,我会执行此操作...

Trainee_login ShowTraineelogin = Trainee.login.TraineeloginRef;
ShowTraineelogin.ShowScreen();

当我想从类(class)文件中隐藏Trainee_Login表单时,我会执行此操作...

Trainee_login HideTraineelogin = Trainee.login.TraineeloginRef;
HideTraineelogin.HideScreen();

问题是InvokeRequired始终为false,else条件得到执行。
我也对其他形式使用相同的模式,其中Invokerequired为true,并且是否执行showscreen()条件。 Hidescreen()也有同样的问题。

我错过了什么吗?

我的Trainee_login形式的代码:

private static Trainee_Login Trainee_LoginInstance = null;

public static Trainee_Login Trainee_LoginRef
{
get
{
if (Trainee_LoginInstance == null)
Trainee_LoginInstance = new Trainee_Login();
return Trainee_LoginInstance;
}
}

public void showScreen()
{
if (this.InvokeRequired == true)
{
this.Invoke(new MethodInvoker(this.showScreen));
}
else
{
this.Show();
}

}
public void hideScreen()
{
if (this.InvokeRequired == true)
{
this.Invoke(new MethodInvoker(this.hideScreen));
}
else
{
this.Hide();
}
}

最佳答案

仅在处理多个线程时才需要InvokeRequired。我在您的代码中看不到您将使用多个线程的地方。打开和关闭表单都在主UI线程上进行,因此在您的情况下就没有必要了。

添加了

万一您需要它,可以在这里找到线程的介绍:

http://www.yoda.arachsys.com/csharp/threads/

关于multithreading - 问题: InvokeRequired is always False when trying to show the form in c# windows application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1541674/

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