.NET - Как я могу получить больше информации об ошибке в моей программе? Ошибка: «Поток 0x566967f6 вышел с кодом 0 (0x0)» - PullRequest
0 голосов
/ 14 января 2009

Может быть, вы можете мне помочь ...

Я пишу программу для Windows Mobile, которая подключается к почтовому серверу и получает данные с POP3-сервера. Я использую стороннюю (бесплатную) розетку, доступную от здесь . Я использую VS 2008 (в VB.NET) и устройства-эмуляторы.

Я могу без проблем подключиться и выполнить различные команды (например, войти в систему, STAT, LIST, TOP). Однако, когда я использую команду RETR для загрузки электронной почты, через некоторое время я получаю ошибку, которую не могу отследить. Если я получаю короткое электронное письмо, оно обычно загружает данные без проблем. Но если я пытаюсь получить сообщение электронной почты с вложением (с большим количеством байтов для передачи), я обычно получаю «ошибку» в отношении 70-80 000 байтов. Однако, когда я запускаю приложение на моем реальном устройстве, я все равно получаю сообщение об ошибке, но обычно к 400-500000, хотя иногда и раньше.

Запуск этого приложения на рабочем столе (тот же сторонний сокет, но другой .dll) работает без каких-либо проблем. Я могу легко загружать огромные вложения. Я сомневаюсь, что это связано с сетевыми проблемами - например, работает Pocket Outlook для загрузки электронной почты с вложениями с того же почтового сервера.

Ошибка не отображается в режиме отладки - это означает, что код не останавливается на определенной строке. Я также вставил Try-Catch в мой код, но ошибки не отображаются. Однако, используя окно вывода отладки, я замечаю, что через некоторое время появляется строка, которая гласит: «Поток 0x566967f6 вышел с кодом 0 (0x0)».

Я полагаю, что проблема связана с DLL-библиотекой (которая является COM-библиотекой на основе ATL) или, скорее, с моим способом кодирования этой библиотеки, но прежде чем писать в них, я хотел посмотреть, смогу ли я отследить проблему в эту библиотеку и почему это может вызвать мою ошибку / проблему. Таким образом, я могу предоставить больше информации, когда напишу им. Итак, мне просто интересно, есть ли способ в VS 2008 для меня, чтобы получить больше информации относительно моей проблемы / ошибки? Спасибо.

1 Ответ

3 голосов
/ 14 января 2009

Код выхода 0 означает, что ошибка не возникла и что поток завершен нормально. Если он не должен завершаться, попытайтесь выяснить, при каких условиях он может, и выясните, какой из них разрешает преждевременному выходу из потока.

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

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