2014-12-12 3 views
2

임 쓰기 창은 사용자의 선택에 따라 1 분, 2 분 또는 5 분마다 데이터를 동기화해야하는 응용 프로그램을 저장합니다 (클라이언트의 필수 요구 사항 임). 내가 배우는 것처럼 15 분 미만의 백그라운드 작업을 실행할 수는 없습니다. 구현할 수있는 방법이 있습니까? 이것은 Windows 기반의 탭 기반 응용 프로그램 용입니다.Windows 스토어 앱 백그라운드 작업이 매분 실행됩니까?

매분마다 동기화를 실행하는 스레드를 수동으로 작성하면 사용자가 페이지를 전환 할 때 스레드 클래스와 기능을 어디에 놓아야합니까?

나는이 질문이 this의 중복임을 안다. 그러나 누군가가 방법이나 해결 방법을 찾은 경우에 대비하여 다시 묻습니다.

답변

1

아니요 Windows Phone에서는 백그라운드 작업을 실행할 권한이 없습니다. 사용자가 실제로 시스템 시간과 상호 작용하지 않으면 운영 체제에 의해 백그라운드 작업이 종료 될 수도 있습니다.

한 가지 방법은 푸시 알림을 보내는 것입니다. 그러나 모든 경우에이를 실행하는 것은 불가능합니다.

+0

감사합니다. Windows 8.1을 대상으로하는 탭 기반 응용 프로그램 용입니다. –

1

내가 AsyncSockets를 사용하여 항목의 목록을 서버에서 분마다 새로 고침 윈도우 폰에서이 클래스를 사용하고, 어쩌면 당신은

public class BackgroundWorker : IDisposable 
{ 
    private static readonly BackgroundWorker SingleWorker = new BackgroundWorker(); 
    public static BackgroundWorker GetInstance() 
    { 
     return SingleWorker; 
    } 

    private readonly Thread _worker; 
    private bool _disposed = false; 
    private readonly AutoResetEvent _are = new AutoResetEvent(false); //can't remeber if it is true or false 

    private BackgroundWorker() 
    { 
     _worker = new Thread(HandleWorker); 
     _worker.Start(); 
    } 

    private void HandleWorker() 
    { 
     while (true) 
     { 
      _are.Reset(); 

      //Check if there is work to be done 
      //Do Work 


      _are.Set(); 

      //Add a wait here Like wait for 2 minutes before you continue 
     } 
    } 

    public void WaitForCompletion() 
    { 
     if (_disposed) 
      throw new ObjectDisposedException(this.GetType().Name,"Object cannot be accessed when disposed"); 
     _are.WaitOne(); 
    } 

    public void Dispose() 
    { 
     _disposed = true; 
     _worker.Abort(0x0); 
     _are.Set(); 
    } 
} 
(어쩌면 당신은 일부 데이터 aswell를 저장할) 당신의 요구에이 클래스를 수정할 수 있습니다