我有一个从非托管进程加载的C#库DLL。到目前为止,一切都很好。现在我想将Enterprise Library 5.0与其日志记录功能结合起来。我添加了这些引用:C#使用企业库时的非托管应用程序崩溃
- Microsoft.Practices.EnterpriseLibrary.Common.dll
- Microsoft.Practices.Unity.dll
- Microsoft.Practices.Unity.Interception.dll
- Microsoft.Practices.ServiceLocation .dll文件
- Microsoft.Practices.EnterpriseLibrary.Logging.dll
...和所有所需的using语句。 这里是从类的摘录:
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.InterceptionExtension;
using Microsoft.Practices.ServiceLocation;
using Microsoft.Practices.Unity.Configuration;
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=2)]
unsafe public static class DLLDispatch
{
private static IConfigurationSourceBuilder LoggingBuilder = new ConfigurationSourceBuilder();
...
}
的问题是,当该字段被定义的非托管过程崩溃。如果它被注释掉,这个崩溃不会发生。这里是Windows应用程序日志此崩溃:
**西格[0] =请将.Name应用程序名称
西格[0] .value的= terminal64.exe
西格[1],请将.Name =应用程序版本
西格[1]。价值= 5.0.0.507
西格[2] =请将.Name程序时间戳
西格[2]。价值= 003f5e00
西格[3]请将.Name =故障模块名称
西格[3]。价值= clr.dll
西格[4]请将.Name =故障模块版本
西格[4]。值= 4.0.30319.237
西格[5]请将.Name =故障模块时间戳
西格[5]。价值= 4dd2333e
西格[6]请将.Name =抗辩N个码
西格[6]。价值= C00000FD
西格[7] =请将.Name异常偏移
西格[7]。价值= 000000000007382a **
我搜索网络为例外代码c00000fd,并发现它是一个计算器:-)异常。 我玩过一段时间,每次有企业库涉及的实例时都会发生此故障。如果没有使用该库,那么就没有崩溃。这里发生了什么?这是否因为班级处于不安全的环境中,或者还有什么可能? 在此先感谢。
@比利:对不起,我仍然在这个网站的学习过程。我会保重的。 – Juergen