簡體   English   中英

C#控制台應用程序-必應地圖-如何保存輸出

[英]C# Console app - Bing Maps - how to save output

我可以從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;
  }
}

對於控制台應用程序,同步下載和保存文件可能更簡單,例如使用WebClient.DownloadFile()

var client = new WebClient();
client.DownloadFile( sURI, sLocFname );

我不確定您的基於事件的代碼出了什么問題。

我的第一個猜測是該應用程序退出Main()並在后台下載完成之前退出。 在這種情況下,您可能需要阻塞主線程,直到完成vImage_DownloadCompleted事件為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM