ThreadState已停止。没有例外。这是怎么回事?

时间:2010-11-08 14:10:31

标签: c#

在VS2008中我有一个程序,它偶尔会出现一个问题,即消费者线程停止处理工作。当我看着ThreadState说停止了。导致线程停止的原因是什么?我没有阻止它。没有例外。好像很奇怪。 感谢

2 个答案:

答案 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);
    }