gpt4 book ai didi

windows-phone-7 - 如何从 Windows Phone 上的前台应用程序发出 ScheduledTask 信号?

转载 作者:行者123 更新时间:2023-12-04 17:56:52 24 4
gpt4 key购买 nike

我正在创建一个具有前台应用程序(当然)以及一个 PeriodicTask 和一个 ResourceIntensiveTask 的应用程序。

如果用户在运行时启动应用程序,我需要一种关闭计划任务的方法。

我没有看到任何使用系统范围的互斥体来做到这一点的方法。理想情况下,当后台任务开始时,会分离出一个线程来监听来自前台应用程序的信号,如果它收到这个信号,它可以干净地关闭后台任务。

除了轮询(比如特定文件的文件夹)之外,是否有人对我的前台应用程序如何在前台应用程序启动时向后台代理发出信号关闭有明确的建议?

我正在走向套接字,但这似乎有点矫枉过正。

背景:
我目前使用 IsolatedStorage 来存储我的数据(不是数据库)——最终我将转向使用数据库。

我的前台应用程序将本地数据与 Web 服务同步,并在从 Web 服务添加新项目时更新 UI。我使用一个文件来查找数据项,并在新项目同步时附加到该文件中。

我希望后台代理运行以在后台执行此同步,更新隔离存储中的文件,包括索引等。但是一旦我启动前台应用程序,我需要后台应用程序停止,以便前台和后台不要同时尝试更新相同的文件。

我一次只需要一个进程来更新本地数据,我需要前台进程抢占后台进程。

最佳答案

无并发更新解决方案:

申请 ( App() ) :

var m = new Mutex(false, "MyMutex");
m.WaitOne(); //When PeriodicTask runs wait

if(lastSynchronization > 1.Minutes)
{
//Update only when your PeriodicTask not runs before
}

//ApplicationExit
m.ReleaseMutex();

PeriodicTask(主线程):
var m = new Mutex(false, "MyMutex");
if(m.WaitOne(0)) // Dont wait for the handle
{
// Synchronization

m.ReleaseMutex();
}
else
{
//Abort task (You dont want to wait for the main application)
}

应用程序启动时停止PeriodicTask 解决方案:

申请 ( App() ) :
var m = new Mutex(false, "MyMutex");
m.WaitOne();

// Application

m.ReleaseMutex();

PeriodicTask(单独的线程):
var m = new Mutex(false, "MyMutex");

while (m.WaitOne(0)) // Check for main application
{
m.ReleaseMutex();
}

// Abort task

我认为这是 WP7 中可用成员的最佳解决方案:

http://msdn.microsoft.com/en-us/library/system.threading.mutex(v=VS.96).aspx

关于windows-phone-7 - 如何从 Windows Phone 上的前台应用程序发出 ScheduledTask 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com