在后台任务中设置壁纸
Setting a wallpaper in background task
我想在后台任务中获取存储文件夹中的所有图像。
首先在app_entering后台方法中注册了一个后台任务。
我也可以调试 运行 方法,但是 none 的 await 方法正在工作-
public void Run(IBackgroundTaskInstance taskInstance)
{
var differal = taskInstance.GetDeferral();
UpdateUI();
differal.Complete();
}
public async void UpdateUI()
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("Wall_e_photos")//here execution stops and backgroundtaskhost exits.
var files = await GetFilesAsync();
foreach (StorageFile file in files)
{
if (file.Name.Contains("wall_e"))
{
}
}
}
苦苦挣扎了很长时间..最初后台任务不工作,开始工作后..现在存储文件夹问题(获取文件夹时后台任务退出)。
还有一个注释,我遵循了这个 link-
http://www.codeguru.com/win_mobile/win_store_apps/setting-wallpapers-in-a-windows-8-store-app-with-vb.htm
在那里他们使用了调度程序,如果我使用 var dispatcher=MyDispatcher = GetForCurrentThread().Dispatcher,那么它会给出空引用异常
如果我使用 Windows.ApplicationModel.Core.CoreApplication.MainView ,那么它给出了无法创建新视图的异常..
请帮帮我...
你这里有问题:
var differal = taskInstance.GetDeferral();
UpdateUI();
differal.Complete();
UpdateUI
是一个异步方法,所以方法调用会立即结束(同时方法继续在后台执行)。因此,您在工作结束前致电 differal.Complete();
。
解决这个问题的一个简单方法是将延迟作为参数传递给 UpdateUI
方法,并在最后完成它:
public async void UpdateUI(BackgroundTaskDeferral deferral)
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("Wall_e_photos")//here execution stops and backgroundtaskhost exits.
var files = await GetFilesAsync();
foreach (StorageFile file in files)
{
if (file.Name.Contains("wall_e"))
{
}
}
deferral.Complete();
}
另一种方法是将 UpdateUI
更改为 async Task
,然后等待其继续:
public async void Run(IBackgroundTaskInstance taskInstance)
{
var differal = taskInstance.GetDeferral();
await UpdateUI();
differal.Complete();
}
public async Task UpdateUI()
{
...
}
我想在后台任务中获取存储文件夹中的所有图像。 首先在app_entering后台方法中注册了一个后台任务。 我也可以调试 运行 方法,但是 none 的 await 方法正在工作-
public void Run(IBackgroundTaskInstance taskInstance)
{
var differal = taskInstance.GetDeferral();
UpdateUI();
differal.Complete();
}
public async void UpdateUI()
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("Wall_e_photos")//here execution stops and backgroundtaskhost exits.
var files = await GetFilesAsync();
foreach (StorageFile file in files)
{
if (file.Name.Contains("wall_e"))
{
}
}
}
苦苦挣扎了很长时间..最初后台任务不工作,开始工作后..现在存储文件夹问题(获取文件夹时后台任务退出)。
还有一个注释,我遵循了这个 link- http://www.codeguru.com/win_mobile/win_store_apps/setting-wallpapers-in-a-windows-8-store-app-with-vb.htm
在那里他们使用了调度程序,如果我使用 var dispatcher=MyDispatcher = GetForCurrentThread().Dispatcher,那么它会给出空引用异常
如果我使用 Windows.ApplicationModel.Core.CoreApplication.MainView ,那么它给出了无法创建新视图的异常..
请帮帮我...
你这里有问题:
var differal = taskInstance.GetDeferral();
UpdateUI();
differal.Complete();
UpdateUI
是一个异步方法,所以方法调用会立即结束(同时方法继续在后台执行)。因此,您在工作结束前致电 differal.Complete();
。
解决这个问题的一个简单方法是将延迟作为参数传递给 UpdateUI
方法,并在最后完成它:
public async void UpdateUI(BackgroundTaskDeferral deferral)
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("Wall_e_photos")//here execution stops and backgroundtaskhost exits.
var files = await GetFilesAsync();
foreach (StorageFile file in files)
{
if (file.Name.Contains("wall_e"))
{
}
}
deferral.Complete();
}
另一种方法是将 UpdateUI
更改为 async Task
,然后等待其继续:
public async void Run(IBackgroundTaskInstance taskInstance)
{
var differal = taskInstance.GetDeferral();
await UpdateUI();
differal.Complete();
}
public async Task UpdateUI()
{
...
}