当前位置:编程学习 > C#/ASP.NET >>

线程问题,大家看看问题何在。

    private void DealOpcReWritDate()
        {
            try
            {
                while (true)
                {
                    lock (OpcReWriteQueue)
                    {
                        while (OpcReWriteQueue.Count > 0)
                        {
                            try
                            {
                                OpcReWrite q = OpcReWriteQueue.Peek();
                                DicOpcSer[q.OpcServerName].WriteByType(q.groupID + q.itemType, (int)q.value, q.itemIndex);
                                OpcReWriteQueue.Dequeue();
                            }
                            catch (Exception ex)
                            {
                                throw new Exception(ex.Message);
                            }
                        }
                    }
                    Thread.Sleep(1000);
                }
 
            }
            catch (Exception ex)
            {
                LOG.Error(ex.Message);
            }
  
        }


当DicOpcSer[q.OpcServerName].WriteByType(q.groupID + q.itemType, (int)q.value, q.itemIndex);出错时线程不再执行。不知道什么原因。 线程 --------------------编程问答-------------------- 是不是抛出异常了,抛出异常之后如果没有抓异常,线程就会结束,你可以把断点设置在 throw new Exception(ex.Message);这句上, --------------------编程问答-------------------- 同意楼上 --------------------编程问答-------------------- 很清楚啊。内层异常处理中,未做处理,又抛出异常。这样,外层try就捕获到了内层抛出的异常,外层catch中写完日志后,就退出了线程函数,线程自然结束了。 --------------------编程问答-------------------- 如果你想出错后还继续运行线程,应该在内层catch中写日志,不要抛异常。如果认为这个错误很严重,线程不能继续执行,应去掉内层的try……catch
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,