C# 4.0 C#应用程序在列表内崩溃。枚举器
我的公司编写的一个软件有问题,它是一个实时服务器,作为windows服务运行,使用RabbitMQ与WebApplication/Silverlight客户端进行接口。它在启动服务后10分钟到2周内意外崩溃。应用程序事件查看器中记录了2个错误(我已将类和exe名称替换为XXX): 来源:应用程序错误,事件ID:1000,任务:(100) 故障应用程序XXX.exe,版本0.0.1.18195,时间戳 0x4e4a015e,故障模块clr.dll,版本4.0.30319.1,时间戳 0x4BA21EB,异常代码0xc0000005,故障偏移量 0x000000000018063e,进程id 0x%9,应用程序启动时间0x%10 及 源:.NET运行时,事件ID:1023,任务:无 应用程序:XXX.exe框架版本:v4.0.30319说明: 由于.NET运行时的内部错误,进程已终止 IP 000007FEF973063E(000007FEF95B0000),出口代码80131506 正在引发以下异常。它在遍历列表的底层数组时似乎遇到了问题,我无法理解它是如何为null的 XXX`1[XXX];异常:System.NullReferenceException:对象 引用未设置为对象的实例。在 System.Collections.Generic.List`1.Enumerator.MoveNext()位于 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()位于 System.Collections.Generic.List`1.InsertRange(Int32索引, IEnumerable`1集合) 我曾尝试将ADPlus连接到该服务,但它速度太慢,无法使用。由于Watson博士不再可用,很难获得内存转储,有人能推荐其他不会对性能造成太大影响的工具吗C# 4.0 C#应用程序在列表内崩溃。枚举器,c#-4.0,C# 4.0,我的公司编写的一个软件有问题,它是一个实时服务器,作为windows服务运行,使用RabbitMQ与WebApplication/Silverlight客户端进行接口。它在启动服务后10分钟到2周内意外崩溃。应用程序事件查看器中记录了2个错误(我已将类和exe名称替换为XXX): 来源:应用程序错误,事件ID:1000,任务:(100) 故障应用程序XXX.exe,版本0.0.1.18195,时间戳 0x4e4a015e,故障模块clr.dll,版本4.0.30319.1,时间戳 0x4BA21
以前有人见过类似的情况吗?如果Windows服务中的后台线程出现异常,该服务将崩溃。看起来传递到
InsertRange
的IEnumerable
是null
解决了这个问题,问题应该会消失,但是您仍然容易发生崩溃。我建议您的所有后台线程捕获并处理异常。例如,要启动安全线程池线程,可以执行以下操作:
ThreadPool.QueueUserWorkItem(o =>
{
try
{
//...
}
catch (Exception e)
{
Log.Error(e);
}
}