Как убедиться, что одновременно запускается только одна фоновая задача? - PullRequest
0 голосов
/ 07 декабря 2018

Я попробовал этот код, чтобы убедиться, что задача может быть запущена только один раз:

    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 голосов
/ 10 декабря 2018

I думаю, вы могли бы использовать 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");
...