【发布时间】:2018-12-07 09:42:33
【问题描述】:
我已尝试此代码以确保任务只能运行一次:
static bool running = false;
public void Run(IBackgroundTaskInstance taskInstance)
{
if (running)
{
makeToast("Cancelled because another already running");
return;
}
running = true;
// Do stuff.
}
但是,即使任务的所有实例都已终止,似乎运行仍然是正确的。在取消时将其设置为 false 也不可靠,因为取消方法并不总是被调用(意外的系统关闭、崩溃......)。
有没有办法判断其他实例是否在后台任务本身中运行?
【问题讨论】:
-
首先,在可写静态上加一个锁。也许也可以尝试抓住你的工作,如果工作失败,则将 running fo 设置为 false。
-
@LeBigCat 锁只能帮助写作,对吧?
-
有点复杂:阅读此链接stackoverflow.com/questions/1668719/…
标签: c# uwp background desktop-bridge