使用如下代码创建线程
osThread = new Thread(new ThreadStart(oService.SocketRun));
osThread.Start();
oService.SocketRun 完成任务后利用 return 返回
发现由于创建线程增加的 句柄并不释放,请问大虾们有何办法 释放句柄,或者是由什么其它方法由子线程自动 终止 ,而不需要通过父线程来终止? 多谢了
osThread = new Thread(new ThreadStart(oService.SocketRun));
osThread.Start();
oService.SocketRun 完成任务后利用 return 返回
发现由于创建线程增加的 句柄并不释放,请问大虾们有何办法 释放句柄,或者是由什么其它方法由子线程自动 终止 ,而不需要通过父线程来终止? 多谢了
解决方案 »
- 两个datagridview 分别显示主表和明细表的数据,该怎么做
- 求助!!!Winform如何嵌入暴风影音5
- .net1.1 控件 如何获得焦点
- C# Winfrom 自动关闭
- 将Excel作为网格控件
- 100分求个解决方案,请大家帮忙看看,万分感谢!
- 请高手指点..关于留言板回复区域显示问题..帮小弟改改吧!!
- TCP通讯中字符设计问题
- 兄弟姐妹请帮忙!兄弟姐妹请帮忙!c#如何实现表格中斜线并打印多项内容的功能,谢谢了
- 请教一个基本知识问题,关于事件
- switch case 为何不允许嵌套? 如何实现我需要的功能? 只能用else if 吗?
- C#程序打包 如何将 .net framework 也打进去
microsoft的自动回收就是做这个用的呀
osThread=null;
GC.Collect();
以下是我的看法:
线程有自己的计数器和自己的上下文,当技术器=0时候,系统会释放资源.注意是系统管理,所以当中也有端时间.我们看os这本书经常能看到线程的3态,其实还有一态,称为僵尸态,也就是在linux下面的僵尸进程.其意思就是结束了,但是系统还没有释放资源,它的生命期就是这段时间.windows是多线程模型,它的线程和unix下面的进程作用基本相同.
osThread.Close(); //or osThread.Kill();
线程中断方法是这样的:
osThread.Join();
osThread.Abort();最好在线程开始前再加上这句:
osThread.IsBackground=true;
osThread.Start();
线程变量最好是定义在另一个窗体或者模块里运行,这样在关闭那个窗体的事件里面:
osThread.Join();
osThread.Abort();
并在窗体关闭后释放资源窗体资源:frm.Dispose();
一般线程就会随之释放资源。
你们搞错了吧。