2015-10-03 3 views
2

Я пытаюсь следовать Getting Started пример, приведенный здесь: https://components.xamarin.com/gettingstarted/facebookiosДолжен ли Facebook GraphRequest.Start() вызываться из основного потока?

Следующая GraphRequest отлично работает, когда выполняется в основном потоке:

var request = new GraphRequest ("/me?fields=name", null, AccessToken.CurrentAccessToken.TokenString, null, "GET"); 
request.Start ((connection, result, error) => { 
    // Handle if something went wrong with the request 
    if (error != null) { 
     new UIAlertView ("Error...", error.Description, null, "Ok", null).Show(); 
     return; 
    } 

    // Get your profile name 
    var userInfo = result as NSDictionary; 
    nameLabel.Text = userInfo ["name"].ToString(); 
}); 

Однако, когда я запускаю тот же самый код из фонового потока используя Task.Run, кажется, что делегат обработчика завершения в пределах request.Start никогда не вызывается.

Поддерживает ли GraphRequest только выполнение основного потока?

ответ

4

Вы можете использовать:

var graphRequest = new GraphRequest ("/me?fields=name,gender", null, AccessToken.CurrentAccessToken.TokenString, null, "GET"); 
    var requestConnection = new GraphRequestConnection(); 
    requestConnection.AddRequest(graphRequest, (connection, result, error) => 
     { 
     var profile = result; 
     }); 
    requestConnection.Start(); 
Смежные вопросы