Ну, вот я снова с другим расстраивающим вопросом.
Мне нужно завершить основной процесс и перезапустить его, но я не могу просто аккуратно завершить приложение ...
Я использую приложение C # в сочетании с проприетарным (не для меня) оборудованием для сбора данных, так что тут все уже сложно.
Существует сценарий, когда мое программное обеспечение успешно работает, собирая свои данные должным образом, когда оборудование, с которым я взаимодействую, внезапно теряет питание и соединение с моим приложением. Мое приложение в конечном итоге выясняет это, и мне просто нужно избавиться от моего старого соединения и создать новое, чтобы снова подключиться к моему оборудованию. Неправильно ...
Конечно, метод .Dispose () на моем объекте (объект интерфейса с оборудованием), который завершает соединение, ничего не делает, и фактически просто навсегда блокируется на месте, когда я пытаюсь его запустить. Очевидно, существует некоторая связь, которая никогда не прерывается в методе утилизации, которая требует, чтобы устройство было подключено, когда происходит отключение. Я не писал метод, поэтому я не знаю.
Наконец, вот мой вопрос. Единственный способ запустить и запустить мое приложение - это закрыть его и снова открыть. Конечно, я не могу его закрыть, потому что не могу запустить метод Dispose. Я вынужден завершить этот процесс через диспетчер задач. Да, процесс, а не только приложение. Если я просто закрою его, процесс останется в живых навсегда, у меня нет выбора.
Мне нужно найти способ автоматизировать этот процесс убийства, чтобы мои пользователи могли его использовать, но что я могу сделать? Я знаю, что завершение процесса - это табу, но какие у меня есть варианты?
Я бы хотел использовать Application.Restart (), но это совсем не работает, моя форма даже не закрывается, она просто блокируется. Есть ли способ ускорить процесс непосредственно перед тем, как снова заявить о себе? Может быть, я могу сделать это с помощью командного файла или что-то? Приложение. Выход по крайней мере снимает форму с экрана.
На данный момент я убиваю его из диспетчера задач, или мои пользователи убивают его, нажимая выключатель на ПК. Значительно более резкий, чем что-либо программное.