主にこのチュートリアルに従って、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);
}
}