判断线程状态问题

hlgchina 2008-11-19 05:09:06
Thread dl = new Thread(new ThreadStart(downfile));
while(true)
{
if(!dl.IsAlive)
{
dl.Start();
}
else
{
Application.DoEvents();
}

}

第一次运行正确,到第二次执行dl.Start();的时候出错

“线程正在运行或被终止;它无法重新启动。”
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
长沙三毛 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bloodish 的回复:]
引用 5 楼 hlgchina 的回复:
ManualResetEvent,没有set()方法啊
另外这个放在downfile方法的最后面?

你可以用AutoResetEvent

看你的代码,有个疑问为什么要重复开线程?
While可以直接移到线程里去做

[/Quote]ManualResetEvent有Set()方法
bloodish 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hlgchina 的回复:]
ManualResetEvent,没有set()方法啊
另外这个放在downfile方法的最后面?
[/Quote]
你可以用AutoResetEvent

看你的代码,有个疑问为什么要重复开线程?
While可以直接移到线程里去做
hlgchina 2008-11-19
  • 打赏
  • 举报
回复
ManualResetEvent,没有set()方法啊
另外这个放在downfile方法的最后面?
bbbbbb888888 2008-11-19
  • 打赏
  • 举报
回复
顶LS的.....
长沙三毛 2008-11-19
  • 打赏
  • 举报
回复
安全方法是,线程自然终止,即运行到线程的}语句。如果再次调用 new 创建线程可能抛出上述错误。建议使用同步机制:在线程完成后设置 ManualResetEvent.Set(),启动线程时:ManualResetEvent.WaitOne()。
human_2 2008-11-19
  • 打赏
  • 举报
回复
Thread dl = new Thread(new ThreadStart(downfile));
while(true)
{
if(!dl.IsAlive)
{
dl = new Thread(new ThreadStart(downfile));
dl.Start();
}
else
{
Application.DoEvents();
}

}

hlgchina 2008-11-19
  • 打赏
  • 举报
回复
自己顶

111,130

社区成员

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

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

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