Мое приложение C# в Visual Studio по какой-то причине переходит в режим приостановки, даже если исключения обрабатываютсC#

Место общения программистов C#
Ответить
Anonymous
 Мое приложение C# в Visual Studio по какой-то причине переходит в режим приостановки, даже если исключения обрабатываютс

Сообщение Anonymous »

Я работал над большим приложением C#, предназначенным для выполнения различных тестов на нескольких последовательных устройствах. Цель состоит в том, чтобы приложение работало непрерывно, периодически выполняя около 10 тестов и загружая результаты в базу данных. Все шло гладко, пока из ниоткуда программа не начала переходить в режим приостановки менее чем за сутки работы.
Похоже, проблема связана с аппаратной проблемой: COM-порты исчезают после некоторое время, и в последнее время это происходит чаще. Однако я уже реализовал обработку исключений для решения этой проблемы. Предполагается, что программа перехватит исключение, когда COM-порты исчезнут, и продолжит работу. И какое-то время он именно это и делает — ловит ошибку и поддерживает выполнение тестов. Но через некоторое время он просто переходит в режим останова без какой-либо видимой причины.
Странно то, что обработка исключений работает какое-то время, но в конце концов сдается, и я не знаю, почему . Может ли быть ограничение на то, сколько раз исключение может быть вызвано в IDE, прежде чем оно перейдет в режим останова? Или существует ограничение по времени, по истечении которого приложение больше не может восстановиться после исключения?
Мы будем очень признательны за любую информацию от сообщества!
Я загрузил конец журнала отладки. Большая часть журнала является избыточной. Возникают ошибки, из-за которых он не получает доступа к COM-порту. Я обрабатываю исключение, регистрируя электронное сообщение и закрывая порт. Этот способ обработки работает нормально, но внезапно он переходит в режим останова, и я не показываю какое-либо конкретное место в коде, где он решил прерваться. Так что я слеп, когда дело доходит до устранения этой проблемы.
Я также приложил скриншот IDE, когда это произошло. ВЫ можете видеть, что определенный вызов заблокирован. Кто-нибудь может пролить свет на то, что здесь происходит?
Скриншот IDE

Код: Выделить всё

2024-10-08 01:32:13.3191 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:13 AM**********Void RebootCheck(System.String, Int32, Boolean, Boolean)**********
\n
2024-10-08 01:32:32.9861 | ERROR | Exception Could not find file 'COM90'.    for port COM90 \n
2024-10-08 01:32:32.9861 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:32:32.9861 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:32:32.9861 | ERROR | stack 3: Boolean CANDown() \n
2024-10-08 01:32:32.9861 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:32:32.9861 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:32:33.0243 | ERROR | Exception Could not find file 'COM90'.     for port COM90 \n
2024-10-08 01:32:33.0243 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:32:33.0243 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:32:33.0243 | ERROR | stack 3: Boolean WifiDown() \n
2024-10-08 01:32:33.0243 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:32:33.0243 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:32:51.9409 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:51 AM**********Void PingLTETest(System.String, Int32)**********
\n
2024-10-08 01:32:54.0729 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #  \n
2024-10-08 01:32:56.2052 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #  \n
2024-10-08 01:32:58.3388 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #  \n
2024-10-08 01:32:59.8681 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:59 AM**********Void eMMCTest(System.String, Int32)**********
\n
2024-10-08 01:33:03.4663 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:33:03 AM**********Void LTETransmitTest(System.String, Int32)**********
\n
2024-10-08 01:33:04.5915 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~  \n
2024-10-08 01:33:05.7169 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~  \n
2024-10-08 01:33:06.8420 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~  \n
2024-10-08 01:33:08.2868 | INFO | time taken for LTETransmit test4 \n
2024-10-08 01:33:18.3677 | INFO | 2024-10-08T01:28:44**********COM74**********3**********CE241400075********************10/8/2024 1:33:18 AM**********Void RebootCheck(System.String, Int32, Boolean, Boolean)**********
\n
2024-10-08 01:33:41.0991 | ERROR | Exception Could not find file 'COM90'.    for port COM90 \n
2024-10-08 01:33:41.0991 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:33:41.0991 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:33:41.0991 | ERROR | stack 3: Boolean CANDown() \n
2024-10-08 01:33:41.0991 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:33:41.0991 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:33:41.1358 | ERROR | Exception Could not find file 'COM90'.    for port COM90 \n
2024-10-08 01:33:41.1358 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:33:41.1358 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:33:41.1358 | ERROR | stack 3: Boolean WifiDown() \n
2024-10-08 01:33:41.1358 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:33:41.1358 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
Реализован файл журнала с использованием библиотеки Nlog, чтобы узнать, что происходит.
В файле журнала нет ничего необычного. Возникают ошибки из-за сбоя одного из последовательных портов, но программа продолжает выполнение, как и ожидалось, благодаря методу обработки ошибок. Непонятно, почему через некоторое время это перестает делать.
В коде не реализована параллельная архитектура. Это циклический сценарий. Тесты выполняются на каждом последовательном устройстве последовательно.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... son-even-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»