유니버설 Windows 플랫폼 앱이 있고 백그라운드 확인을 위해 winrt 구성 요소 (솔루션의 별도 프로젝트)를 사용합니다. 올바르게 등록하고 시스템이 15 분마다 winrt 클래스를 시작합니다. 문제는 내 앱이 동일한 파일을 사용하고 백그라운드 검사기가 수행하는 것과 동일한 검사를한다는 것입니다. 따라서 다중 스레드 파일 액세스를 피하기 위해 백그라운드 검사를 건너 뛰려면 내 앱이 살아 있는지 (백그라운드 또는 포 그라운드) 알아야합니다. winrt 구성 요소에서 내 앱의 상태에 액세스 할 수있는 방법이 있습니까? 또는 쿼리 시스템이 내 앱을 활성화합니까?
기념일 업데이트 이후로 이제 메인 앱과 동일한 프로세스 내에서 백그라운드 작업을 실행할 수 있습니다. 백그라운드 작업과 기본 앱은 모두 동일한 메모리를 공유합니다. 이를 수행하는 방법에 대한 정보 는 단일 프로세스 백그라운드 작업 생성 및 등록을 참조 하십시오 .
백그라운드 작업을 메인 앱에 대한 별도의 프로세스로 유지하려면 이름이 지정된 EventWaitHandle을 사용할 수 있습니다 .
포 그라운드 앱 코드
// Keep this handle alive for the duration of your app
eventHandle = new EventWaitHandle(true, EventResetMode.ManualReset, "MyApp");
백그라운드 앱 코드
EventWaitHandle handle;
if (EventWaitHandle.TryOpenExisting("MyApp", out handle)) {
// Foreground app is running
} else {
// Foreground app is not running
}
여기에서 가능한 경쟁 조건을 염두에 두어야합니다 (상황에 문제가있는 경우). EventWaitHandle을 더 잘 사용하여 두 프로세스가 수행해야하는 파일 작업을 동기화 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다