首页 文章

在后台任务中设置壁纸

提问于
浏览
0

我想从后台任务中的存储文件夹中获取所有图像 . 首先在app_entering后台方法中注册后台任务 . 我也可以调试Run方法,但没有一个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"))
                {
                    }

  }
       }

从很长一段时间苦苦挣扎..初始后台任务在它开始工作后无效 . 现在存储文件夹问题(获取文件夹时后台任务退出) .

也是为了注意我跟着这个链接 - 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,那么它给出了null引用异常

如果我使用Windows.ApplicationModel.Core.CoreApplication.MainView,那么它无法创建新的视图异常..

请帮我...

1 回答

  • 2

    你有一个问题:

    var differal = taskInstance.GetDeferral();
    UpdateUI();
    differal.Complete();
    

    UpdateUI 是一个异步方法,因此方法调用将立即结束(当方法在后台继续执行时) . 因此,您在工作结束前调用 differal.Complete(); .

    解决这个问题的一种简单方法是将deferral作为参数传递给 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()
    {
        ...
    }
    

相关问题