2010-04-30 7 views
1

저는 C#을 사용하는 .Net Compact Framework 3.5를 사용하여 Windows Mobile 6.5에서 응용 프로그램을 개발 중입니다. 프로그램에서 서버 측에서 위치 정보를 주기적으로 업데이트하는 함수가 있지만이 계산을 계속 실행하면 너무 많은 에너지가 소비됩니다. 이런 이유로 백그라운드에서 실행하고 BackgroundWorker를 사용하여이 작업을 수행하려고합니다.프로그램 종료 후 프로세스 실행을 유지하는 방법은 무엇입니까?

문제는 내가 프로그램을 최소화 할 수 없기 때문에 아무 것도하지 않아도 프로그램의 메인 폼을 전경으로 유지해야한다는 것이고 이는 사용자에게 매우 불편 함을줍니다. 그러나 프로그램을 닫으면 BackgroundWorker도 닫힙니다.

프로그램을 닫을 때 업데이트 프로세스가 계속 실행될 수있는 방법이 있습니까 (메모리 어딘가에있을 수 있습니다)? 그런 다음 프로그램을 다시 시작할 때 정보를 복원 할 수 있습니까?

+0

다음을보십시오. http://managedserviceswm.codeplex.com/ –

답변

0

양식이 닫히면 Application.Run (Program.Main에서 아마 호출 됨)이 반환되고 프로세스의 기본 스레드가 종료되어 응용 프로그램이 종료됩니다.

솔루션은 양식을 닫지 않고 숨기기 만합니다. 기본적으로 폼의 "MinimizeBox"속성은 true이어야하며 오른쪽 위 모서리에 [X]가 있어야합니다. 이를 클릭하면 양식이 최소화되고 응용 프로그램이 종료되지 않습니다.

경우에 따라 다른 옵션은 양식이 전혀없는 것입니다. 여기서의 도전 과제는 CF가 Form에 동의하지 않는 Application.Run 오버로드를 가지고 있지 않다는 것입니다 (데스크톱 프레임 워크처럼). Smart Device Framework는 해당 경로로 이동하려는 경우 하나를 제공합니다.

+0

답장을 보내 주셔서 감사합니다. 내가 가지고있는 문제는 양식을 최소화 할 때 (오른쪽 상단의 [X]를 사용하여) 전화가 충돌하고 전화를 다시 시작해야한다는 것입니다. 그리고 나는 당신이 언급 한 다른 옵션이 무엇인지 잘 모르겠다. 당신이 더 자세히 설명 할 수 있겠는가? 감사합니다. – user329762

+1

앱을 최소화하면 크래시가 발생하므로 디버깅하고 해결해야하며 다른 해결 방법을 찾아야합니다. – ctacke

0

.NETCF 3.5를 사용하지 않았습니다. 그러나 .NETCF 1.0/2.0의 이전 버전에서는 (X) 버튼을 사용하여 응용 프로그램을 닫을지라도 백그라운드로 이동하지만 메모리에 남아있는 것을 관찰했습니다.

그렇다면 .NETCF 3.5의 경우에도 여기서는 아무 것도 할 필요가 없다고 생각합니다. 응용 프로그램을 닫더라도 작업 한 배경은 실행 중일 것입니다.

희망이 도움이 될 것입니다.

1

백그라운드 작업자 대신 서비스를 만드는 방법은 어떻습니까?

관련 문제