C # - COMException не было обработано - PullRequest
1 голос
/ 16 марта 2011

Я занимаюсь разработкой приложения, в котором я получаю информацию о пользователях из Active Directory.Я прохожу каждого пользователя и получаю его информацию.У меня много пользователей в AD, и когда я сначала запускаю приложение, оно работает просто отлично, но когда дело доходит до пользователя 2000, приложение останавливается и выдает мне ошибку: Дескриптор недействителен.(Исключение из HRESULT: 0x80070006 (E_HANDLE))

Я действительно не знаю, что это значит, потому что точное одно и то же приложение прекрасно работает на другом компьютере и проходит через каждыйпользователь в AD и получает их информацию.

Что я могу сделать?

РЕДАКТИРОВАТЬ: я использую BackgroundWorker для получения информации о пользователях из AD.

   private void BGWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        try
        {
            //Here I call the method to get user information from the AD.
            GetUserFromADMethod("Server", "AD");
        }
        finally
        {
           //Calling Dispose() here dose not work.
            BGWorker.Dispose();
        }
   }

1 Ответ

2 голосов
/ 16 марта 2011

Это ошибка Windows низкого уровня, ERROR_INVALID_HANDLE, ошибка 6. Получение недопустимых значений дескриптора при перечислении больших объемов данных предполагает, что ваше приложение не вызывает Dispose (), когда это необходимо.Одним из возможных способов диагностики является TaskMgr.exe, вкладка «Процессы».Вид + Выберите столбцы и отметьте «Ручки».Соблюдайте отображаемое значение для вашей программы во время ее работы.Большой kaboom происходит, когда он достигает 10000 на большинстве машин.

Проверьте ваш код на предмет правильного использования оператора , используя или явно вызвав Dispose () или Close (), когда используемый вами класс реализуетЭто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...