这似乎和安全与否并无关联.net 的多线程是并行的,各线程有自己的结束方法(自然结束),在主线程也可以结束它(.abort 和.join)
事实上真正给开发人员的这样的控制权是少之又少,老是培养了一堆衣来伸手的家伙。。
你的问题只能怪你没有领晤规格化编程,是流程控制和布置问题
事实上真正给开发人员的这样的控制权是少之又少,老是培养了一堆衣来伸手的家伙。。
你的问题只能怪你没有领晤规格化编程,是流程控制和布置问题
解决方案 »
- C#MyQQ
- 如何调用Google的api,使用它的GoogleFinance方法?
- 请教下这些类库在三层结构中都代表了些什么?
- 帮忙优化下这个循环,因为在程序中这个方法屡屡被调用到。
- arraylist转成list
- ASP.NET新人问个问题
- DevExpress 中gridview绑定事件中设置某些单元格为只读属性
- 快点救我!能够解决的马上给分!(在线等待)
- Windows form怪问题,请高手帮助我一下~~~~~~~~~~~~
- 微软的开发工具太烂了!!!!!!!!!!
- 利用WebService上传文件,如何获取上传进度??
- ▓▓▓▓在DataGrid中如何根据行宽自动换行?(Winform)▓▓▓
说明:获取或设置一个值,该值指示某个线程是否为后台线程。
属性值:如果此线程是后台线程或即将成为后台线程,则为 true;否则为 false。一个线程或者是后台线程或者是前台线程。后台线程与前台线程类似,区别是后台线程不会防止进程终止。一旦属于某一进程的所有前台线程都终止,公共语言运行库就会通过对任何仍然处于活动状态的后台线程调用 Abort 来结束该进程。
but
我就是觉得奇怪,为什么vs.net的debug环境没有返回,因为我把form给关闭了,按道理来说应该clr会调用abort,但是我所看到的,它让我觉得并没有这么做。您是老前辈,做个朋友吧
[email protected]
我的Email:[email protected]
所有的程序都是直线型的,由于它的入口点不象vb/delphi 那样直接指定窗体,相反反而要鼓励人们要在自己的main 函数里自己createWindowEx 一个窗体,也就是说,窗体对C而言只是由main 派生的一个子程序而已,并不是象VB那样成为主要。这点我们在C#里也见到了,启动一个窗体实际上是main 函数里的application.run 为该form 建立一个无限消息循环,所以此窗体是否已经载出和主程序是否已经结束并无直接的关系,从理论上来说application.exit 也是一样,它只是结束当前的form 中的无限消息循环简单的说,在一个VS工程建立之后,由编译器将它转化为api(也就是所谓的EXE 现在的EXE事实上都是伪EXE),经常见的比如1,找到入口点main
2,由main 里的application.run(new form1()); 转化为CreateWindowEx 创建一个窗体,然后在创建后回调form_load 等事件,完成后updateWindow 再回调 form_resize 等事件可以看出,事实上form1 和main 可以理解为二个并行的线程,form1 只是main 的一个派生物,但是main 在application.run 之后被挂起(因为已经出让了消息循环),我们做个实验:static void Main()
{
Application.Run (new Form1());
MessageBox.Show("ok");
}运行后是在是 form1 载出(unload)后才出现ok 的MessageBox 的而不是application.run 之后马上出现ok 对话框而多线程并不是是这样,它们都是并行的,彼此都有它们自己的消息循环,所以某form(只是你自己理解成主程序,form 并不是主程序)中结时返回还必须要执行main 下面的命令,并不代表程序就结束了,这时VS也不敢直接帮你将全部子线程中结,必须自己处理其它的线程中止,就算自动帮你abort 也是微软考虑到某些粗心的人或者希望得到简单编程的人士
我不熟悉在.net,一个form给创建和delete的步骤,但是认为这个过程必须和vc的类似,因为这个消息机制是windows的体制所决定的,所以我虽然没有直接关闭最上层的函数,但是消息机制会这样做
以至我认为,.net是在消息的映射后,由内部clr对domain中的thread进行检测,来完成所有的资源回收和对子thread的abort对了我+你了哈