Share via


iOS でのメイン スレッドのコントロール更新

この iOS プラットフォーム固有の機能を使用すると、バックグラウンド スレッドで実行されるのではなく、メイン スレッドでコントロール レイアウトとレンダリングの更新を実行できます。 ほとんど必要ありませんが、場合によってはクラッシュを防ぐことができます。 Application.HandleControlUpdatesOnMainThread バインド可能なプロパティを true に設定することで XAML で使用されます:

<Application ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             ios:Application.HandleControlUpdatesOnMainThread="true">
    ...
</Application>

あるいは、Fluent API を使用して C# から使用することもできます。

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

Xamarin.Forms.Application.Current.On<iOS>().SetHandleControlUpdatesOnMainThread(true);

Application.On<iOS> メソッドは、このプラットフォーム固有が iOS でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.iOSSpecific 名前空間の Application.SetHandleControlUpdatesOnMainThread メソッドは、コントロール のレイアウトとレンダリングの更新を、バックグラウンド スレッドで実行するのではなく、メイン スレッドで実行するかどうかを制御するために使用されます。 さらに、Application.GetHandleControlUpdatesOnMainThread メソッドを使用して、コントロール のレイアウトとレンダリングの更新がメイン スレッドで実行されているかどうかを返すことができます。