1
Supose你有启动按钮形式/停止线程(不暂停或中断,我真的需要停止线程!) 看看这个代码:C#CF重新启动一个线程
Constructor()
{
m_TestThread = new Thread(new ThreadStart(ButtonsThread));
m_bStopThread = false;
}
ButtonClick
{
// If the thread is not running, start it
m_TestThread.Start();
// If the thread is running, stop it
m_bStopThread = true;
m_TestThread.Join();
}
ThreadFunction()
{
while(!m_bStopThread)
{
// Do work
}
}
2个问题(记得CF): - 我如何知道线程是否正在运行(我似乎无法访问m_pThreadState,并且我试过C++ GetThreadExitCode(),它会给出错误结果)? - 最重要的问题:如果我已经停止线程,我无法重新启动它,很可能是因为m_TestThread.m_fStarted仍然被设置(并且它是私人的,所以我无法访问它)!因此,m_TestThread.Start()会生成一个异常(StateException)。
用Abort()停止线程并不能解决问题。如果我把我的m_TestThread = null;它的工作原理,但后来我创建了一个内存泄漏。 GC也不会清理,即使我等待了xx秒。
有人有想法吗?所有帮助高度赞赏! Grtz E
请参阅暂停和恢复字幕:“注意:此API现在已过时。” – 2010-03-24 17:36:11
THX所有的反馈。不幸的是,CF中不支持ThreadState(http://msdn.microsoft.com/en-us/library/system.threading.thread_members.aspx)。我会坚持布尔值,但我觉得这是一个非常尴尬的方式来处理(但也许这只是我) – 2010-03-29 07:38:44