我已经尝试使用以下代码来确保任务只能运行一次:
static bool running = false;
public void Run(IBackgroundTaskInstance taskInstance)
{
if (running)
{
makeToast("Cancelled because another already running");
return;
}
running = true;
// Do stuff.
}
但是,即使任务的所有实例都终止了,运行似乎仍然保持正确。在取消时将其设置为false也不可靠,因为取消方法并不总是被调用(意外的系统关闭,崩溃...)。
是否有其他方法可以在后台任务本身中运行?
答案 0 :(得分:0)
我认为您可以使用LocalSettings
来记录后台任务的运行时间。并且本地设置数据将存储在磁盘中,并且具有持久性。
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["exampleSetting"] = "Hello Windows";
在下一次后台任务运行之前,您可以检索数据,如果它不为null,则说明任务已运行。
Object value = localSettings.Values["exampleSetting"];
if (value == null)
{
// No data.
}
else
{
// Access data in value.
}
// Delete a simple setting.
localSettings.Values.Remove("exampleSetting");