У меня есть библиотека C # DLL, которая загружается из неуправляемого процесса.Пока все хорошо.Теперь я хотел включить Enterprise Library 5.0 с ее возможностями ведения журналов.Я добавил следующие ссылки:
- Microsoft.Practices.EnterpriseLibrary.Common.dll
- Microsoft.Practices.Unity.dll
- Microsoft.Practices.Unity.Interception.dll
- Microsoft.Practices.ServiceLocation.dll
- Microsoft.Practices.EnterpriseLibrary.Logging.dll
... и все необходимые операторы использования.Вот выдержка из класса:
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 для этого сбоя:
** Sig [0] .Name = Имя приложения
Sig [0] .Value = Terminal64.exe
Sig [1] .Name = версия приложения
Sig [1] .Value = 5.0.0.507
Sig [2] .Name = метка времени приложения
Sig [2].Value = 003f5e00
Sig [3] .Name = имя модуля сбоя
Sig [3] .Value = clr.dll
Sig [4] .Name = FaultВерсия модуля
Sig [4] .Value = 4.0.30319.237
Sig [5] .Name = метка времени неисправности модуля
Sig [5] .Value = 4dd2333e
Sig [6] .Name = код исключения
Sig [6] .Value = c00000fd
Sig [7] .Name = смещение исключения
Sig [7] .Value = 000000000007382a **
Я искал в Интернете код исключения c00000fd и обнаружил, что это исключение stackoverflow :-).Я немного поиграл, и этот сбой происходит каждый раз, когда в корпоративной библиотеке задействован экземпляр.Если из этой библиотеки ничего не используется, то сбоев не будет.Что здесь происходит?Это потому, что класс находится в небезопасном контексте или что еще это может быть?Заранее спасибо.