Что мне делать делать Когда метод удаления не работает?

Ну, вот и я снова с еще одним неприятным вопросом. Мне нужно завершить основной процесс и перезапустить его, но я не могу просто завершить приложение изящно ...

Я использую приложение C # вместе с проприетарным (не для меня) оборудованием для сбора данных, так что прямо сейчас уже сложный.

Существует сценарий, когда мое программное обеспечение успешно работает, собирая свои данные должным образом, когда оборудование, с которым я взаимодействую, внезапно теряет питание и соединение с моим приложением. Мое приложение в конце концов понимает это, и мне просто нужно избавиться от старого соединения и создать новое, чтобы снова подключиться к моему оборудованию. Неправильно ...

Конечно, метод .Dispose () моего объекта (интерфейсный объект с оборудованием), который завершает соединение, ничего не делает, а фактически просто навсегда блокируется, когда я пытаюсь его запустить. По-видимому, существует какой-то вид связи, который никогда не истекает в методе удаления, который требует, чтобы устройство было подключено при отключении. Я не писал метод, поэтому не знаю.

Наконец, вот мой вопрос. Единственный способ снова запустить мое приложение - закрыть его и снова открыть. Конечно, я не могу его хорошо закрыть, потому что не могу запустить метод Dispose. Я вынужден завершить процесс через диспетчер задач. Да, процесс, а не только приложение. Если я его просто закрою, процесс останется живым навсегда, у меня нет выбора.

Мне нужно найти способ автоматизировать этот процесс убийства, чтобы мои пользователи действительно могли его использовать, но что я могу сделать? Я знаю, что завершение процесса - табу, но какие у меня есть варианты?

Я бы хотел использовать Application.Restart (), но это вообще не работает, моя форма даже не закрывается, она просто блокируется. Есть ли способ остановить процесс непосредственно перед тем, как сказать себе, что нужно запустить снова? Может я смогу сделать это с помощью батника что ли? Application.Exit, по крайней мере, убирает форму с экрана.

На данный момент я убиваю его из диспетчера задач, или мои пользователи убивают его, нажимая прерыватель на ПК. С точки зрения программного обеспечения значительно более жестко, чем что-либо еще.

5
задан i_am_jorf 8 August 2011 в 21:01
поделиться