winform里怎么通过线程开启新窗体

zhou23141622 2013-12-31 10:02:43

private void Nullfun()
{
Thread.Sleep(5000);
}


private void timer1_Tick(object sender, EventArgs e)
{
Nullfun();
Form2 f = new Form2();
f.Show();
}

这里的timer用的是System.Windows.Forms.Timer下的.用这个timer子窗体不会卡死,但是界面会.
但是如果换成System.Timers.Timer,子窗体启动后就会一直卡死.究竟怎么写才好呢
...全文
361 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou23141622 2013-12-31
  • 打赏
  • 举报
回复
引用 3 楼 devmiao 的回复:
private void timer1_Tick(object sender, EventArgs e) { Nullfun(); this.BeginInvoke(() => { Form2 f = new Form2(); f.Show(); }); }
这个不行的
  • 打赏
  • 举报
回复
            new Thread(() =>
            {
                Thread.Sleep(5000);
                Application.Run(new Form2());
            }).Start();
dare_ 2013-12-31
  • 打赏
  • 举报
回复
System.Windows.Forms.Timer 是在主线程调用 界面不是卡死了 而是焦点在frm了
xian_wwq 2013-12-31
  • 打赏
  • 举报
回复
不用委托,没有办法保证主界面不卡死
devmiao 2013-12-31
  • 打赏
  • 举报
回复
private void timer1_Tick(object sender, EventArgs e) { Nullfun(); this.BeginInvoke(() => { Form2 f = new Form2(); f.Show(); }); }
zhou23141622 2013-12-31
  • 打赏
  • 举报
回复
引用 1 楼 wawd74520 的回复:
题目看 你得去看 线程安全 你这是timer控件 应该用showdialog 或者在show之前timer停止
showdialog的话会使主窗体无效
失落的神庙 2013-12-31
  • 打赏
  • 举报
回复
题目看 你得去看 线程安全 你这是timer控件 应该用showdialog 或者在show之前timer停止

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧