Xamarin.Forms - BeginInvokeOnMainThread for an async Action

后端 未结 3 1922
我寻月下人不归
我寻月下人不归 2021-01-19 01:02

I am familiar with the rules about updating UI elements on the UI thread using the Device.BeginInvokeOnMainThread, however I have an operation that needs to be run on the UI

3条回答
  •  暖寄归人
    2021-01-19 01:23

    Since Xamarin.Forms 4.2 there is now a helper method to run tasks on the main thread and await them.

    await Device.InvokeOnMainThreadAsync(SomeAsyncMethod);
    

    Several overloads exist that should cover most scenarios:

    System.Threading.Tasks.Task InvokeOnMainThreadAsync (System.Action action);
    System.Threading.Tasks.Task InvokeOnMainThreadAsync (System.Func funcTask);
    System.Threading.Tasks.Task InvokeOnMainThreadAsync (System.Func> funcTask);
    System.Threading.Tasks.Task InvokeOnMainThreadAsync (System.Func func);
    

    Related PR: https://github.com/xamarin/Xamarin.Forms/pull/5028

    NOTE: the PR had some bug that was fixed in v4.2, so don't use this in v4.1.

提交回复
热议问题