UWP 从后台任务设置锁屏/壁纸
Posted
技术标签:
【中文标题】UWP 从后台任务设置锁屏/壁纸【英文标题】:UWP Set Lockscreen/Wallpaper from Background Task 【发布时间】:2015-09-23 09:46:23 【问题描述】:有没有办法从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...
我有什么遗漏吗(可能无法从Background Task
拨打TrySetWallpaperImageAsync
)?
任何帮助将不胜感激,谢谢!
【问题讨论】:
【参考方案1】:确保您是否正在运行已注册的后台任务。 并且在 Run 方法和后续方法中确保使用
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
您不必将.GetResults()
用于TrySetWallpaperImageAsync()
,因为它默认返回一个布尔值。
【讨论】:
感谢您的帮助。我有一个async void
方法,我在Run
方法中不是awaiting
。用AsyncInfo.Run
更改为IAsyncOperation<bool>
,现在一切正常。菜鸟错误:)以上是关于UWP 从后台任务设置锁屏/壁纸的主要内容,如果未能解决你的问题,请参考以下文章