0

主にこのチュートリアルに従って、Facebookのイベントページに写真をアップロードしました。これまでのところ、満足のいく結果が得られており、ほとんどの場合、写真がイベント ページにアップロードされています。ただし、プログラムが写真をアップロードしているときに、ネットワーク接続が遅延しているか切断されている場合、プログラムがクラッシュし、次のSystem.AggregateExceptionメッセージとともに , がスローされることがあります。

A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread.

初期検査によると、これの InnerException は次のとおりです。

[Facebook.WebExceptionWrapper]: {"The underlying connection was closed: An unexpected error occurred on a receive."}

、および上記の例外の InnerException はSystem.IO.IOException、および IOException 内の別の例外System.Net.Socket.SocketExceptionであり、どちらのエラー メッセージも のような内容を示してい{"An established connection was aborted by the software in your host machine"}ます。

例外の StackTrace は私にのみ与えます:

at System.Threading.Tasks.TaskExceptionHolder.Finalize()

明らかに、問題はシステムが時々遭遇する可能性のあるネットワーク接続の悪さによって引き起こされます. では、このチュートリアルから参照されているコードに基づいて、この例外をどのように、またはどこで処理すればよいでしょうか? これが別のスレッドで発生したときに、try-catch ブロックをどこに配置すればよいかわかりません。

ありがとうございます!

チュートリアルからの参照コード:

var mediaObject = new FacebookMediaObject
                              {
                                  ContentType = "image/jpeg",
                                  FileName = Path.GetFileName(_filename)
                              }
                              .SetValue(File.ReadAllBytes(_filename));

var fb = new FacebookClient(_accessToken);
fb.PostCompleted += fb_PostCompleted;
fb.PostAsync("/me/photos", new Dictionary<string, object> { { "source", mediaObject } });

public void fb_PostCompleted(object sender, FacebookApiEventArgs e)
{
  if (e.Cancelled)
  {
    var cancellationError = e.Error;
    MessageBox.Show("Upload cancelled");
  }
  else if (e.Error == null)
  {
    // upload successful.
    MessageBox.Show(e.GetResultData().ToString());
  }
  else
  {
    // upload failed
    MessageBox.Show(e.Error.Message);
  }
}
4

0 に答える 0