一些信息:
我有最奇怪的错误! 每当我使用时:
private void Main_Load(object sender, EventArgs e)
{
TestForm form = new TestForm();
form.ShowDialog();
}
TestForm只是一个没有添加控件的标准形式。
它会停止主线程,因为它应该!但不是等待输入,它将产生一个新的“形式”0.5秒aprox ...我采取了一个新的解决方案并尝试,并在那里工作正常,但在我正在进行的应用程序中,它做到了这一点它在内部或从这种形式运行。
将相同的表单代码放在BackGroundWorker中,然后它可以正常工作。
只有在我有的主UI表单内,发生此错误..
使用Show()
正常工作,只打开1个表单,但不能使用对话框结果: - /
我不知道为什么,之前从未见过这个? 请帮忙。
编辑: 我按照Roy Dictus的建议做了,并设置了一个断点。 这是在我的LauncherFrom中加载Main:
private void timerHide_Tick(object sender, EventArgs e)
{
this.Hide();
// Open main form IF true else open hidden
var f = new a.Views.Main();
if (Properties.Settings.Default.StartHidden)
{
f.Opacity = 0;
f.Show();
f.Hide();
f.Opacity = 1;
}
else
{
f.Show();
}
// Stop timer
timerHide.Stop();
}
看起来timerHide.Stop();
从未被调用过
我之前已经使用了很多次,而且还有一些ShowDialog()
次调用可以正常工作..
那为什么这只对ShowDialog();
的一些不起作用?
如果我从TestForm.ShowDialog();
移除Main_Load()
,则会调用timerHide.Stop();
就好了。
答案 0 :(得分:0)
您的代码永远不会到达tiemrHide.Stop()
。那是因为你显示了一个运行自己的消息泵的模态对话框。所以你的计时器一次又一次地开火。
这是怎么回事:
timerHide_Tick
将触发,并创建一个新的主表单实例。Main_Load
。您需要在Stop()
开始时致电timerHide_Tick
。