我很欣賞GetAsync是,異步,但我找不到任何文檔如何使用它。在這個階段,我想要的只是獲取我的名字並將其分配給文本塊。當然,如果我在_fbClient.GetCompleted + =/_fbClient.GetAsync(「/ me」)塊中這樣做,它會得到無效的跨線程訪問異常錯誤。新手:無效的跨線程訪問使用GetAsync
在下面的代碼中,NameTextBlock控件當然設置爲「[EMPTY]」,並在一段時間後標記爲=======>的行被執行,導致錯誤。
我見過的幾個例子使用了似乎是同步的Get方法,但似乎已經消失了(而且我不想使用它)。
string name = "EMPTY";
try
{
_fbClient.GetCompleted +=
(o, e) =>
{
if (e.Error == null)
{
var result = (IDictionary<string, object>)e.GetResultData();
//Dispatcher.BeginInvoke(() => MyData.ItemsSource = result);
var tempname = (string)result["name"];
name = (string)result["name"];
NameTextBlock.Text = "[" + name + "]";
}
else
{
MessageBox.Show(e.Error.Message);
}
};
_fbClient.GetAsync("/me");
//======> NameTextBlock.Text = "[" + name + "]";
}
catch
{
MessageBox.Show("Failed.. deal with issues.");
}
finally
{
NameTextBlock.Text = "[" + name + "]";
}
可有人提醒我,正確的說法是什麼,試圖從錯誤的線程訪問UI元素嗎?我會失去它的睡眠! ^^ – Smudge202