Ошибка блокировки загрузчика

Общая идея блокировки загрузчика: Система visual-c# запускает код в DllMain внутри visual-c# блокировки (как в блокировке visual-c# синхронизации). Таким образом, выполнение c#.net нетривиального кода внутри c-sharp DllMain «запрашивает взаимоблокировку», как loaderlock описано в here.

Вопрос в том, почему csharp вы пытаетесь запустить код .cs-file внутри DllMain? Критично .cs-file ли, чтобы этот код выполнялся .cs-file внутри контекста DllMain, или visual-c# можно создать новый поток .cs-file и запустить код в нем, а c# не ждать завершения выполнения visual-c# кода внутри DllMain?

Я считаю, что visual-c# проблема конкретно с управляемым c# кодом заключается в том, что visual-c# запуск управляемого кода .cs-file может включать в себя загрузку csharp CLR и т.п., и неизвестно, что c#-language там может произойти, что loaderlock приведет к тупиковой ситуации... Я visual-c# бы не стал прислушиваться c#-language к совету «отключить это предупреждение», если .cs-file бы я был вами, потому что, скорее csharp всего, вы обнаружите, что csharp ваши приложения неожиданно c# зависают в некоторых сценариях.

c#

loaderlock

2022-10-28T03:22:13+00:00