По какой-то причине, после использования IpcChannel и его выключения, иногда именованная труба остается открытой с ожидающим потоком. Я не могу сделать это по требованию в среде отладки, но это происходит от 5 до 10 раз в день в нашей производственной среде. Плохой эффект, который это имеет, заключается в том, что он мешает мне выгрузить домен приложения, поскольку существует поток, бесконечно ожидающий в именованном канале (в нативном методе) ... в моем коде нет фрейма в стеке вызовов - это внутренний код. чистая нить. Если я запускаю проводник процессов и нахожу дескриптор именованного канала, который был оставлен открытым, и принудительно закрываю его, то все снова становится счастливым, домен приложения выгружается нормально. Возможно, я делаю что-то не так, поскольку я не очень много работал с IpcChannels .... мой код на стороне сервера находится здесь: http://pastebin.com/f6e2583b9, если кто-то хочет взглянуть ... это работает на полностью исправленном Server2003 / .NET 2.0.
Как уродливый обходной путь, я думаю, что я буду отслеживать каждый созданный канал, а затем периодически проверять, чтобы убедиться, что они закрыты должным образом, а затем при выгрузке appdomain я принудительно закрою все каналы, которые остались зависшими. .... кто-нибудь может указать мне правильное направление относительно того, как я мог это сделать? Я знаю название канала .... но я не уверен, как проверить, открыт ли он, или как закрыть существующие маркеры ...