如何确保一次仅运行一个后台任务?

时间:2018-12-07 09:42:34

标签: c# uwp background desktop-bridge

我已经尝试使用以下代码来确保任务只能运行一次:

    static bool running = false;

public void Run(IBackgroundTaskInstance taskInstance)
{
    if (running)
    {
        makeToast("Cancelled because another already running");
        return;
    }

    running = true;
    // Do stuff.
}

但是,即使任务的所有实例都终止了,运行似乎仍然保持正确。在取消时将其设置为false也不可靠,因为取消方法并不总是被调用(意外的系统关闭,崩溃...)。

是否有其他方法可以在后台任务本身中运行?

1 个答案:

答案 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");
相关问题