Bing Maps から URI を取得できますが、結果のファイル (.jpg など) を保存しようとすると、空です (1 x 1 サイズなど)。イベント処理を備えた WPF アプリでは問題なく動作していますが、コンソール アプリではどうすればよいですか?
WPF で動作するコードを次に示しますが、コンソール アプリでは同じコードが失敗します。これは、ファイルがイベント ハンドラーに保存されており、(私の知る限り)コンソール アプリでは実行できないためだと思います。
public void vSaveBitmapImage(string sURI, // created with Bing Maps GeocodeServices
string sLocFname)
{
// save file name so event handler knows it
this.sFname = sLocFname;
try
{
BitmapImage bmpImage = new BitmapImage(new Uri(sURI, UriKind.RelativeOrAbsolute));
// setup event handler - file is saved just fine here
bmpImage.DownloadCompleted += vImage_DownloadCompleted;
}
catch (SystemException sex)
{
string s = sex.Message;
}
}
/// <summary>
/// handle the event that an image download has completed
/// </summary>
private void vImage_DownloadCompleted(object sender,
EventArgs e)
{
try
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create((BitmapImage)sender));
using (var filestream = new FileStream(this.sFname, FileMode.Create))
encoder.Save(filestream);
}
catch (SystemException sex)
{
string s = sex.Message;
}
}