1

スケジュールされたタスク エージェントを使用してロック画面の画像を更新できるようにしたいと考えています。私はBuilding Windows Phone 8 Apps Development Jump Startを見ましたが、これは素晴らしい記事です。私の問題は、このビデオで、分離されたストレージから画像を使用して背景を変更する方法を示していることです。使用:

  Uri imageUri = new Uri("ms-appdata:///local/shared/shellcontent/background2.png",                           UriKind.RelativeOrAbsolute);

これは私の場合ではありません (Web サービスからダウンロードする必要があります)。1つの画像をダウンロードし、それを隔離されたストレージに保存し、それを使用してロック画面をアップロードするコードで小さなプロジェクトを構築しました(私が望むことを行うための最良の方法だと思います.).

そうするために私は使用しました:

protected override void OnInvoke(ScheduledTask task)
{
    Deployment.Current.Dispatcher.BeginInvoke(() =>
      {
          SavePictureInIsolatedStorage(
              new Uri(
                  "http://www.petfinder.com/wp-content/uploads/2012/11/101418789-cat-panleukopenia-fact-sheet-632x475.jpg"));
        
         // LockHelper();
          NotifyComplete();
      });

}

と :

private async void SavePictureInIsolatedStorage(Uri backgroundImageUri)
{

    BitmapImage bmp = new BitmapImage();
    await Task.Run(() =>
                       {
                        
                           var semaphore = new ManualResetEvent(false);
                           Deployment.Current.Dispatcher.BeginInvoke(()=>  
                                   {
                                       bmp = new BitmapImage(backgroundImageUri);
                                       semaphore.Set();
                                   });
                           semaphore.WaitOne();
                       });
    bmp.CreateOptions = BitmapCreateOptions.None;
    WriteableBitmap wbmp = new WriteableBitmap(bmp);

    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        var file = "shared/shellcontent/lockscreen.png";
        // when file exists, delete it
        if (myIsolatedStorage.FileExists(file))
        {
            myIsolatedStorage.DeleteFile(file);
        }

        using (var isoFileStream = new IsolatedStorageFileStream(file, FileMode.Create, myIsolatedStorage))
        {
            // use ToolStackPNGWriterExtensions
            ToolStackPNGWriterLib.PNGWriter.WritePNG(wbmp, isoFileStream);

        }

    }

}

私の問題は、ビットマップ イメージがダウンロードされていないように見えることです。同じ結果に直面しているため、WebClientでも試しました。

4

1 に答える 1