在VS2008中我有一个程序,它偶尔会出现一个问题,即消费者线程停止处理工作。当我看着ThreadState说停止了。导致线程停止的原因是什么?我没有阻止它。没有例外。好像很奇怪。 感谢
答案 0 :(得分:1)
也许线程被终止了?
据此:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspx 一个线程只有在它被终止或者它响应中止请求时才处于Stopped状态。
答案 1 :(得分:1)
你确定没有例外吗?
主线程上的try
catch
不会捕获工作线程上的异常
在另一个线程的启动方法中,有一个try
catch
块,然后在主线程上引发一个事件,或者在具有启动方法的对象上的属性上缓存该异常,然后在主线程中检查该属性。
希望这有帮助。
e.g。
class Worker
{
public Exception TheadException { get; private set; }
public void Start()
{
try
{
// Do your thing
}
catch (Exception ex)
{
TheadException = ex;
}
}
}
...
static void Main(string[] args)
{
Worker workerObject = new Worker();
var workerThread = new System.Threading.Thread(workerObject.Start);
workerThread.Start();
workerThread.Join();
if (workerObject.TheadException != null)
Console.WriteLine("Thread failed with exception {0}", workerObject.TheadException);
}