我正在编写windows store应用程序,它需要根据用户的选择每隔1分钟,2分钟或5分钟同步数据(这是客户端必须要求的)。据我所知,不可能在不到15分钟的时间内运行后台任务。有没有办法实施?这适用于面向Windows 8.1的基于选项卡的应用程序
如果我每分钟手动编写一个线程来运行同步,那么线程类和功能应放在何处,以便在用户切换页面时不会停止?
我知道这个问题与this重复。但是,如果有人找到方法或解决方法,请再次询问。
答案 0 :(得分:1)
没有。在Windows Phone中,您无法控制运行后台任务。如果用户实际上没有与系统时间交互,则后台任务甚至可以由操作系统关闭。
一种方法是发送推送通知,但在所有情况下都不可行。
答案 1 :(得分:1)
我已经在Windows Phone中使用此类使用AsyncSockets从服务器每分钟刷新一个Items列表,也许你可以根据需要修改这个类(也许你想存储一些数据)
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();
}
}