我有一個從非託管進程加載的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