[C#]请问如何保持某一个线程不断运行,直到该线程结束

zhuxian2009 2011-03-14 01:17:21
各位大侠好:
如题目,我想让该线程不被挂起,因为此线程有一些代码不能中断的,试过用最高优先级:ThreadPriority.Highest,但还是常常被挂起为WaitSleepJoin状态。
例如:
NewsClass getnews = new NewsClass();                  
getnews.XMLRootName = "XiaoNeiGongGao";//向线程传参
Thread getNewThread = new Thread(new ThreadStart(getnews.getGuetNews));//新建线程的方法
getNewThread.SetApartmentState(ApartmentState.STA); //设该线程为STA模式
getNewThread.IsBackground = true; //设为后台线程,这句要不要都一样会被挂起
getNewThread.Priority = ThreadPriority.Highest; //设为最高优先级
getNewThread.Start(); //启动线程


请问:
怎样才能使该线程(getNewThread)不被挂起,一直处于running状态,直到显示销毁?
...全文
1772 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecker728 2011-03-14
  • 打赏
  • 举报
回复
getNewThread.Join();
garfieldzf 2011-03-14
  • 打赏
  • 举报
回复
我看了你的标题觉的似乎有点矛盾,

线程运行中会自动退出?

线程运行完成后就结束了。

除非
while(true)
{
// your code

thread.sleep(1000);
}
636f6c696e 2011-03-14
  • 打赏
  • 举报
回复
将此线程的优先级调到最高试试
然后用一个无限循环霸占CPU
zhuxian2009 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 findcaiyzh 的回复:]
从win2000开始,某个进程和其中的线程,全部占用CPU,就不太容易(不太可能?)了
[/Quote]

如果实在不行,那只能用绕道实现要的功能了,呵呵
zhuxian2009 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
在线程做个循环就行了,给一个标记,如果不满足就一直循环
[/Quote]
这个方法试过,无论是在创建者线程设置循环,还是被创建者线程设置循环,都不可阻挡的被挂起。。。
zhuxian2009 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jaylongli 的回复:]
先要知道 为什么会被挂起?
[/Quote]

这个线程是在线程池中创建的,可能是线程池为每个线程分配固定的时间片,但是这个线程创建以后应该就不属于线程池管了吧?!
另外,这个线程开始时获得较多的时间,可以运行完,但后面就变得越来越少,测试显示他的优先级没有降低。
请指教~~
宝_爸 2011-03-14
  • 打赏
  • 举报
回复
从win2000开始,某个进程和其中的线程,全部占用CPU,就不太容易(不太可能?)了
加油馒头 2011-03-14
  • 打赏
  • 举报
回复
先要知道 为什么会被挂起?
vrhero 2011-03-14
  • 打赏
  • 举报
回复
如果线程是被系统挂起的那就没办法了...程序再大也大不过OS,线程优先级也只是给OS的一个申请,OS不同意是没招的...
bdmh 2011-03-14
  • 打赏
  • 举报
回复
在线程做个循环就行了,给一个标记,如果不满足就一直循环
宝_爸 2011-03-14
  • 打赏
  • 举报
回复
这个比较困难吧。

110,533

社区成员

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

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

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