【发布时间】:2015-06-30 15:18:33
【问题描述】:
单击按钮时我的表单转换很慢,我正在使用线程来产生表单不透明度从0.1开始并增加数字的表单效果。然后我有一个方法,并从线程中的 Form_Load 启动该方法。
private void RunTimer_Tick_Things()
{
if (flag)
{
while (this.Opacity <= cs.CheckMaxOpacityValue())
{
Thread.Sleep(cs.GetTimerSleepNumberToIncreaseOcacity());
if (this.Opacity == cs.CheckMaxOpacityValue())
{
thrdTimer.Abort();
break;
}
this.Opacity += cs.GetIncreasedOpacityValue();
}
}
else
{
while (this.Opacity >= cs.CheckMinOpacityValue())
{
Thread.Sleep(cs.GetTimerSleepNumberToDecreaseOpacity());
this.Opacity -= cs.GetDecreasedOpacityValue();
}
thrdTimer.Abort();
}
}
我在这个表单中有按钮可以打开另一个表单。像这样
private void button2_Click(object sender, EventArgs e)
{
Form2DatabaseSetup frm2 = new Form2DatabaseSetup();
StopThread();
this.Hide();
frm2.Show();
flag = false;
}
我的问题是当我单击此按钮时,第二个表单打开缓慢。 考虑一下,您单击按钮,然后第一个表单隐藏并等待 1.5 秒,然后第二个表单打开。 注意:第二种形式具有线程和相同的功能。
有没有人经历过或知道、了解过这个案例?
【问题讨论】:
-
您可能也对这个问题的答案感兴趣:stackoverflow.com/questions/12497826/…
-
您使用的是 WinForms 还是 WPF?
-
开始使用 WPF ... 这样的事情要容易得多。它可能打开缓慢,因为 UI 线程正在为不透明度设置动画并显示新表单。
-
你传递给线程睡眠函数的时间是多少?
-
@AlexBell , 没有标准的窗口形式
标签: c# multithreading forms