当前位置: 首页 > 编程语言 > C#

StrangeSystem.__Canon异常分享

时间:2023-04-10 15:01:20 C#

Strangesystem.__Canon异常我有一个Windows服务,使用了单例类ThreadQueue。当服务启动时,它调用ThreadQueue.Start()并且该类接受并发限制任务并将其排队到可配置数量的线程。ThreadQueue.Start()仅在服务启动时调用一次。有时,在运行数小时后,我会收到以下异常:应用程序:myservice.exe框架版本:v4.0.30319描述:由于未处理的异常,进程被终止。异常信息:System.NullReferenceException堆栈:在Apollo.Business.Framework.Threading.ThreadQueue.ThreadQueue`1[[System.__Canon,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]].Start()在System.Threading.ThreadHelper.ThreadStart_Context(System.Object)在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,布尔值)在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object)在System.Threading.ThreadHelper.ThreadStart()什么是System.__Canon以及是什么将此调用作为传递给它的Type参数?谁能逃得过光?你不应该使用方法参数在数字类型名称中读取System.__Canon的任何内容都是与CLR中实现泛型的方式相关的实现细节。我不知道它的确切用法,但强烈怀疑它被Ngen.exe使用,Ngen.exe是.NET中预组装程序集的优化工具。泛型是预先写好的问题,因为具体类型是在运行时实例化的。您将获得采用类型参数的参数类型的方法的多个副本。只有一种方法可以处理任何引用类型,每个值类型都有其他方法(如果有的话)。System.__Canon可以是替代类型,它是任何引用类型的占位符,允许Ngen.exe预先调用该方法,即使它无法猜测将在运行时使用的实际类型。这样的事情。Shoesfit,Apollo.Business.Framework.Threading.ThreadQueue听起来像是框架样式库中存在的类型,并且在安装时预装,因为它被多个程序使用。所以忽略类型名称并关注实际的异常。NullReferenceException当然是一个很常见的异常。从堆栈跟踪中看不到任何暗示它的信息。我猜这个“Apollo”框架有一个初始化问题,一些对象应该有一个值,但仍然是空的。查看ThreadQueue构造函数的源代码应该会给出提示。如果您没有,请致电您的提供商寻求帮助。很久以前修复的8年前版本的flutter中的错误并不能很好地解释它。既然运行时和框架是开源的,回答这类问题就容易多了。__Canon的定义可在此处获得。Quote://用于实例化通用实例化的“规范”方法表的内部方法表。//用户永远不会看到名称“__Canon”,但它会在调试器堆栈跟踪中出现很多//涉及泛型,因此故意保持简短以避免造成麻烦。[Serializable][ClassInterface(ClassInterfaceType.AutoDual)][System.Runtime.InteropServices.ComVisible(true)]internalclass__Canon{}如评论中所解释,它是泛型的实现细节,它是“canonical”的缩写.以上就是C#学习教程:一个奇怪的系统.__佳能异常分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多加关注——本文收集自互联网,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: