GetAsync는 비동기식이지만 잘 사용하는 방법에 대한 설명서는 찾을 수 없습니다. 이 단계에서 원하는 것은 내 이름을 가져 와서 텍스트 블록에 할당하는 것뿐입니다. 물론 _fbClient.GetCompleted + =/_fbClient.GetAsync ("/ me") 블록 내에서이 작업을 수행하면 잘못된 크로스 스레드 액세스 예외 오류가 발생합니다.초보자 : GetAsync를 사용하는 크로스 스레드 액세스가 잘못되었습니다.
아래 코드에서 NameTextBlock 컨트롤은 물론 "[비어 있음]"으로 설정되고 나중에 =======> 표시된 줄이 실행되어 오류가 발생합니다.
필자가 본 몇몇 예제는 동기식 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