Ответ 1
Эта ошибка также может появиться, если у вас возникли проблемы с задержкой в сети или интернет или локальной сети. Могут быть также и мостовые соединения, у которых есть неудачный аналог.
Я получаю эту ошибку...
Срок таймаута семафора истек.
В этой строке...
ThePorts.ActivePort1.Open();
... но я получаю его время от времени. Когда это происходит, это происходит снова и снова. Тогда проблема уходит, часами или днями, затем она возвращается.
Последовательный порт - это USB с подключенным BlueTooth.
Я думаю, что у этого парня была очень похожая проблема, но не на С#
Заморозить на SerialPort.Open/DeviceIoControl/GetcommState с помощью usbser.sys
Насколько я могу судить, я прочитал всю его проблему и полученные комментарии и ответ, но я действительно не могу понять, какой из них исправил его проблему, или если С# существенно отличается от того, что он испытывал.
Спасибо за любую помощь для невежественного. Это фактический код, где это происходит.
public static void Open_ActivePortWeWillUse(String Drone_StringNameFromUser)
{
SerialPort TempSerialPort = new SerialPort(Drone_StringNameFromUser, (int) SerialPortSpeed);
ThePorts.ActivePort1 = TempSerialPort;
ThePorts.ActivePort1.DataBits = 8;
ThePorts.ActivePort1.Parity = Parity.None;
ThePorts.ActivePort1.StopBits = StopBits.One;
ThePorts.ActivePort1.DataReceived += new SerialDataReceivedEventHandler(OurBackGroundSerialPortReceiver);
ThePorts.ActivePort1.Open(); // "Sometimes" Error hits here
}
Эта ошибка также может появиться, если у вас возникли проблемы с задержкой в сети или интернет или локальной сети. Могут быть также и мостовые соединения, у которых есть неудачный аналог.
Хорошо, теперь я подключаюсь без проблемы с таймаутом семафора.
Если кто-либо читает, когда-либо сталкивается с тем же, я надеюсь, что эта процедура будет работать для вас; но не promises; эй, это окна.
В моем случае это была Windows 7
У меня есть небольшой намек от Эта страница на eHow; не уверен, что это может помочь кому-либо или нет.
Так или иначе, это была простая процедура с двадцатью тремя шагами, которая работала для меня
Нажмите кнопку запуска
Выберите панель управления
На панели управления выберите "Диспетчер устройств"
В диспетчере устройств выберите "Универсальные контроллеры последовательной шины"
От универсальных контроллеров последовательной шины щелкните маленький боковой треугольник
Я не могу предсказать, что вы увидите на своем компьютере, но на моем я получаю длинный раскрывающийся список
Начните расследование, чтобы выяснить, кто из этих членов этого списка является виновником...
В каждом члене раскрывающегося списка щелкните правой кнопкой мыши имя
Откроется список, выберите "Свойства"
Время выполнения: используя различные вкладки в верхней части окна, которое открывается, предположите, что это драйвер USB-адаптера, который удушает ваш материал таймаутами семафора
Как только вы сделали правильную догадку, закройте окно свойств USB-корневого узла (но не открывайте окно диспетчера устройств).
Физически отключите все и все от USB-концентратора.
Отключите его.
Верните указатель мыши на этот USB-корневой концентратор в списке, который вы определили ранее.
Щелкните правой кнопкой мыши еще раз
Выберите "Удалить"
Пусть Windows делает свое дело
Подождите немного
Выключите весь компьютер, если у вас есть время; некоторые говорят, что это необходимо. Думаю, мне это удалось.
Вставьте USB-концентратор обратно в разъем USB на ПК
Если список в диспетчере устройств мигает и выполняет несколько вспышек, все в порядке.
Подключите разъем BlueTooth к USB-концентратору
Позвольте окнам сделать что-то еще
В течение двух минут у меня снова был рабочий COM-порт, без тайм-аутов семафора.
Надеюсь, что это сработает для всех, у кого может возникнуть подобная проблема.
У меня была эта проблема и на двух разных компьютерах Windows при общении с Ардуином Леонардо. Надежным решением было:
К сожалению, я не знаю, что делает эта функция, или как она влияет на эту проблему. После нескольких перезапусков ПК и дюжины циклов подключения устройств это единственное, что надежно устраняет проблему.
Эта проблема может иметь место, если сервер БД не работает
Слишком много больших файлов за один раз. Windows Barfs. По сути, копирование заняло слишком много времени, потому что вы слишком много просили у компьютера, а блокировка файла была заблокирована слишком долго, и вы установили флаг, флаг является ошибкой семафора.
Компьютер наполнил себя и задохнулся. Я видел, как оперативная память здесь постепенно заполнялась кэш-памятью. Затем при заполнении подсистемы земля остановилась с ошибкой семафора.
У меня есть обходной путь; копировать или передавать меньше файлов, а не один огромный блок. Разбейте его на наборы блоков и отправляйте по файлам по одному, возможно, по нескольку за раз, но не всегда.
Рекомендации:
https://appuals.com/how-to-fix-the-semaphore-timeout-period-has-expired-0x80070079/