Как сохранить процесс запущенным после закрытия программы? - PullRequest
1 голос
/ 30 апреля 2010

Сейчас я занимаюсь разработкой приложения для Windows Mobile 6.5 с .Net Compact Framework 3.5 с использованием C #. В программе есть функция, которую я использую для периодического обновления информации о местоположении со стороны сервера, но если я продолжу выполнять эти вычисления, это будет стоить слишком много энергии. По этой причине я хочу запустить его в фоновом режиме, и я пытаюсь использовать BackgroundWorker, и он работает хорошо.

Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу свернуть программу, поэтому мне нужно сохранить основной вид программы на переднем плане, даже если она ничего не делает, и это очень неудобно для пользователя. Однако когда я закрываю программу, BackgroundWorker также будет закрыт.

Есть ли какой-нибудь способ сохранить процесс обновления (где-то в памяти или около того), когда я закрываю программу? а потом можно восстановить информацию при перезапуске программы?

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Как насчет создания Сервиса вместо фонового работника?

0 голосов
/ 19 мая 2010

Я не использовал .NETCF 3.5. Однако в предыдущей версии .NETCF 1.0 / 2.0 я заметил, что даже если вы закроете приложение с помощью кнопки (X), оно просто перейдет в фоновый режим, но останется в памяти.

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

Надеюсь, это поможет вам.

0 голосов
/ 30 апреля 2010

Если ваша форма закрывается, то Application.Run (вероятно, вызван в Program.Main) возвращается, и основной поток процесса завершается, вызывая завершение приложения.

Решение, таким образом, заключается в том, чтобы не закрывать форму, просто скрыть ее. По умолчанию свойство «MinimizeBox» для вашей формы должно быть истинным, и оно должно иметь [X] в правом верхнем углу. Нажав на эту кнопку, вы свернете форму и не выйдете из приложения.

Другим вариантом в некоторых случаях является отсутствие формы вообще. Проблема здесь заключается в том, что CF не имеет никакой перегрузки Application.Run, которая не принимает в форме (как это делает инфраструктура рабочего стола). Платформа Smart Device Framework предоставляет такую ​​возможность, если вы хотите пойти по этому пути.

...