UWP从后台任务设置锁屏/壁纸

时间:2015-09-23 09:46:23

标签: c# asynchronous async-await windows-10 background-task

有没有办法从Background Task设置锁屏或壁纸图片?我有以下代码:

if (await UserProfilePersonalizationSettings.Current.TrySetWallpaperImageAsync(file)) {
    Debug.WriteLine("Live wallpaper set!");
} else {
    Debug.WriteLine("Live wallpaper failed to set...");
}

当我在应用程序中正常执行时有效,但是当我从Background Task执行时没有 - 在第一行永远不会被击中后出现断点,表明另一个同步/死锁问题(see my previous post on a similar issue) 。该线程中的修复程序对我来说也不起作用(它始终返回false):

bool success = UserProfilePersonalizationSettings.Current.TrySetWallpaperImageAsync(file).GetResults(); // Try GetResults()... ALWAYS returns false

bool success = Task.Run(async () => {
    return await UserProfilePersonalizationSettings.Current.TrySetWallpaperImageAsync(file);
}).Result; // ALWAYS returns false...

我是否遗漏了某些内容(可能无法从TrySetWallpaperImageAsync致电Background Task)?

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

确定您是否正在运行其注册的后台任务。 并且在Run方法和后续方法中确保使用

BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

您不必将.GetResults()用于TrySetWallpaperImageAsync(),因为它默认返回bool。