关于前台线程的疑问

影游 2013-11-11 08:28:59

private void button2_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(
() =>
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
Thread.Sleep(2000);
}

Console.WriteLine("前台第二线程马上关闭");
}
) { IsBackground = false};

Console.WriteLine("主线程马上关闭");
Application.Exit();
}


疑问:
1.前台线程是主线程嘛?是UI线程吗?
2.如上代码,自己声明的线程是个前台线程,为什么还没有打印东西程序就退出了?书上面不是说,前台线程没有执行完毕,程序是不会结束的吗?

谢谢回答.
...全文
247 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
影游 2013-11-17
  • 打赏
  • 举报
回复
引用 10 楼 yuwenge 的回复:
t1什么时候启动了?还是代码太先进,我已经看到不懂了?
不好意思,我的错,刚刚疏忽了,忘记写了. 如果加上t1.Start();线程可以打印,但是窗口不关闭了,这个怎么解释,主线程已经执行了.application.exit(); 新声明的线程应该执行完毕后就该关闭啊??这个是为什么,欢迎补充
影游 2013-11-17
  • 打赏
  • 举报
回复
引用 9 楼 vb763305825 的回复:
你的只是声明一个线程而已,又没有启动,会打印东西才有鬼;
哈哈,是我的疏忽,不好意思啊, 如果我加上,.start(); 新声明的线程结束后,窗口不关闭,这个如何解释啊,谢谢补充.
影游 2013-11-17
  • 打赏
  • 举报
回复
引用 7 楼 guyuekkk11 的回复:
[quote=引用 3 楼 boyingyou 的回复:] [quote=引用 1 楼 sp1234 的回复:] 书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
如果我想退出当前的主线程,那么new 的那个线程还会保留吗? 仅仅退出当前线程该如何写? 谢谢啦[/quote] 必须结束掉啊。。。你把电总阀门关了,屋里的灯还会亮吗?。。[/quote] 这个不是这样啊,我特意把线程声明成非后台线程,它任务不执行完毕是不默认结束的.
小猪八Q 2013-11-16
  • 打赏
  • 举报
回复
修改下代码,你的线程创建了,但是根本就没有Start t1.Start(); Thread.Sleep(1000); Console.WriteLine("主线程马上关闭"); Application.Exit();
失落的神庙 2013-11-15
  • 打赏
  • 举报
回复
10楼 +1
hwj19900904 2013-11-15
  • 打赏
  • 举报
回复
引用 3 楼 boyingyou 的回复:
[quote=引用 1 楼 sp1234 的回复:] 书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
如果我想退出当前的主线程,那么new 的那个线程还会保留吗? 仅仅退出当前线程该如何写? 谢谢啦[/quote]线程和线程之间是相互独立的,你都Application.Exit()了,就是退出整个进程了,肯定就不会打印了啊。退出线程用Abort()方法就好了。
卧_槽 2013-11-12
  • 打赏
  • 举报
回复
t1什么时候启动了?还是代码太先进,我已经看到不懂了?
  • 打赏
  • 举报
回复
你的只是声明一个线程而已,又没有启动,会打印东西才有鬼;
  • 打赏
  • 举报
回复
引用 3 楼 boyingyou 的回复:
[quote=引用 1 楼 sp1234 的回复:] 书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
如果我想退出当前的主线程,那么new 的那个线程还会保留吗? 仅仅退出当前线程该如何写? 谢谢啦[/quote] 不太清楚你什么意思。如果在主线程新建一个子线程,那么在子线程执行完他的代码之后,就自动结束了。如果你用Abort(),那子线程如果在执行阶段的话也不会立马结束,而是在执行完代码后结束。我是这么理解的。。欢迎被喷。
  • 打赏
  • 举报
回复
引用 3 楼 boyingyou 的回复:
[quote=引用 1 楼 sp1234 的回复:] 书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
如果我想退出当前的主线程,那么new 的那个线程还会保留吗? 仅仅退出当前线程该如何写? 谢谢啦[/quote] 必须结束掉啊。。。你把电总阀门关了,屋里的灯还会亮吗?。。
_小黑_ 2013-11-12
  • 打赏
  • 举报
回复
引用 5 楼 xue529290400 的回复:
主线程结束掉,其他子线程都结束了
不是这样吧,我写的那个程序主线程 即使结束了,子线程 好像还是存在,除非手动 结束
漫天雪飞 2013-11-11
  • 打赏
  • 举报
回复
主线程结束掉,其他子线程都结束了
漫天雪飞 2013-11-11
  • 打赏
  • 举报
回复
退出当前线程不是有Abort()吗?
影游 2013-11-11
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
如果我想退出当前的主线程,那么new 的那个线程还会保留吗? 仅仅退出当前线程该如何写? 谢谢啦
影游 2013-11-11
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?
这个确实没有说耶...
  • 打赏
  • 举报
回复
书上有没有更你说连写20个 Application.Exit(); 语句,那么第13个是运行不到的?

110,533

社区成员

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

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

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