0

라이브 플립 타일을 사용하는 Windows Phone 8 응용 프로그램을 개발 중입니다. 로컬 데이터를 사용하여 라이브 타일을 업데이트하는 예정된 에이전트 (리소스 집중적이지 않은 주기적 작업)를 생성 할 것입니다.포 그라운드 응용 프로그램에서 주기적 작업 동시성 문제

전체 앱이 인터넷에 연결되지 않으면 로컬 데이터 만 사용합니다. 따라서 푸시 알림은 문제가되지 않습니다.

백그라운드 에이전트 및/또는 포어 그라운드 앱에서 라이브 타일을 업데이트해야합니다 (둘 중 먼저 발생하는 시점).

그러나 전경 앱과 백그라운드 에이전트가 서로의 발가락을 밟지 않도록하려면 어떻게해야합니까? 나는이 작업을 수행하는 두 가지 옵션이 있습니다

  • 가 뮤텍스를 사용하여을 (이다 잠금 장치 (모니터) 문제를 벗어나도록 AFAIK 배경 에이전트는 서로 다른 프로세스에서 실행). 그러나 나는 그것이 높은 성능 비용 (뮤텍스를 얻거나 발표하는 것)이 두렵다.

  • 포 그라운드 앱이 시작될 때 항상 에이전트를 제거하고 작업을 수행 한 다음 에이전트를 다시 예약합니다. Theferore는 foreground 앱과 백그라운드 에이전트가 겹칠 가능성은 없지만 에이전트 추가/제거 또한 길어질 수 있으며 에이전트를 제거한 후에도 사용자를 추가 할 수는 있지만 다시 추가하기 전에는 닫을 수 있습니다. .

난 정말이 두 가지 방법 사이에 찢어하고 최상의 될 것이라고 말할 수 없다.

추신 : 상담원 고유 코드에서 상담원 일정을 다시 잡을 수는 없습니까?

+0

뮤텍스를 사용하는 것은 비용이 많이 들지만, 여기서 우리는 대부분 몇 밀리 초를 말합니다. 당신이 수백 시간을 사용하지 않는 한, 사용자가 알아 차릴 수있는 것이 아무것도 아닙니다. –

답변

3

뮤텍스

뮤텍스 옵션은 내가이 옵션을 사용하여 배경 에이전트와 전경 응용 프로그램간에 데이터를 공유 할 때 눈에 띄는 성능 문제를 경험하지 않은 윈도우 폰 7과 8

모두 officially recommended by the MSDN documentation입니다, WP7.1을 목표로하고 1 세대 및 2 세대 WP7 장치 (LG E900 및 Lumia 800)에서 테스트합니다.

분명히 뮤텍스를 사용할 때 핵심은 가능한 한 짧은 시간 동안 리소스를 잠그는 것입니다. 백그라운드 에이전트의 리소스에 대한 잠금을 얻으려고 할 때 WaitHandle.WaitOne의 시간 초과 기능은 백그라운드 에이전트가 실행하는 데 25 초 밖에 걸리지 않으므로 매우 유용합니다.

참고 : 전용 또는 다음 두번째 프로젝트/진 다른 접근 방식 (프로세스 간 통신을위한 명명 된 이벤트)를 통해 윈도우 폰 8을 대상으로하는 경우 사용할 수 있습니다. Peter Torr wrote about it on the official Windows Phone Developer blog.


활성화/비활성화 배경 에이전트

당신이 언급 번째 방법은 어떤 OS를 보장하는 것은 추가하거나 배경 에이전트의 제거를 위해주는 우리가 모르기 때문에 더 위험 - 제거하면 경우 발생하는 순식간에? Foreground App이 실행되는 동안 새로 갱신 된 Background Agent가 실행되면 어떻게됩니까? 기타자신을 갱신 할 수


에이전트 갱신

배경 에이전트는 - 전경 응용 프로그램에 의해 갱신하지 않는 한 번, they will run for a maximum of two weeks을 추가했다. 이렇게하면 사용자가 더 이상 사용하지 않는 앱에 대해 백그라운드 에이전트가 실행되지 않습니다.

+0

Brilliant! 내 질문에 완전히 답합니다. 고맙습니다! –