2015-11-02 6 views
1

Итак, у меня нет вопроса, потому что я уже решил его, но в случае, если кто-то еще сталкивается с этой проблемой, он всегда приятно иметь аккуратное решение.Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare() [xamarin]

И хотя есть количество "Can't create handler inside thread which has not called Looper.prepare()" - вопросы нет, у вас нет тегов с xamarin. (Так их есть все Java и я имел 0 матчей за «Невозможно создать обработчик внутри нити, которая не называется Looper.prepare() [Xamarin]»)

ответ

2
public static class PageExtensions 
{ 
    public static Task<bool> DisplayAlertOnUi(this Page source, string title, string message, string accept, string cancel) 
    { 
     TaskCompletionSource<bool> doneSource = new TaskCompletionSource<bool>(); 
     Device.BeginInvokeOnMainThread(async() => 
     { 
      try 
      { 
       var result = await source.DisplayAlert(title, message, accept, cancel); 
       doneSource.SetResult(result); 
      } 
      catch (Exception ex) 
      { 
       doneSource.SetException(ex); 
      } 
     }); 

     return doneSource.Task; 
    } 
} 

Наконец я имел случай для использования TaskCompletionSource в решить проблему.

Смежные вопросы

 Смежные вопросы