【问题标题】:Windows Store App background task to be run every minute?Windows Store App 后台任务每分钟运行一次?
【发布时间】:2014-12-12 10:53:07
【问题描述】:

我正在编写 Windows 存储应用程序,它需要根据用户的选择每 1 分钟、2 分钟或 5 分钟同步一次数据(这是客户端的必须要求)。据我所知,后台任务的运行时间不可能少于 15 分钟。有没有办法实现?这是针对 Windows 8.1 的基于选项卡的应用程序

如果我手动编写一个线程每分钟运行一次同步,线程类和功能应该放在哪里,以便用户切换页面时不会停止?

我知道这个问题与this 重复。但是再次询问是否有人找到了方法或解决方法。

【问题讨论】:

    标签: c# windows-store-apps task backgroundworker


    【解决方案1】:

    没有。在 Windows Phone 中,您没有太多控制权来运行后台任务。如果用户实际上没有与系统时间交互,后台任务甚至可能被操作系统关闭。

    一种解决方法是发送推送通知,但这并非在所有情况下都可行。

    【讨论】:

    • 谢谢。这是针对 Windows 8.1 的基于选项卡的应用程序。
    【解决方案2】:

    我在 Windows Phone 中使用了这个类,每分钟使用 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-04
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      相关资源
      最近更新 更多