以下を実行したい
MainPage = new ContentPage
{
Content = new StackLayout
{
Children =
{
new Button
{
Text = "Thread.Sleep",
Command = new Command(() =>
{
Thread.Sleep(1000);
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
}),
},
new Button
{
Text = "Task.Run + Thread.Sleep",
Command = new Command(async () =>
{
await Task.Run(() => Thread.Sleep(1000));
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
})
},
new Button
{
Text = "Device.StartTimer",
Command = new Command(() => Device.StartTimer(
TimeSpan.FromSeconds(1),
() =>
{
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
return false;
})),
},
}
}
};
System.Threading
とSystem.Threading.Tasks
を含めましたが、
「スレッド」という名前は現在のコンテキストに存在しません。
このサイト は、Thread.Sleep
をXamarin.Forms
で使用できることを示唆しています。これはPCLではなく共有プロジェクトにあります。
待ちたい場合
非同期:await Task.Delay(10000);
同期的に:Task.Delay(10000).Wait();
ただし、UIスレッドをブロックしないようにして、優れたユーザーエクスペリエンスを確保し、アプリの応答性を維持してください。
Xamarin.FormsでThread.Sleepを使用
2つのXamarin.Formsテンプレートがあります。
Xamarin.Formsポータブルクラスライブラリ
PCLサブセットメカニズムのため、Thread.Sleep
を取得する機会はありません。
2017年の更新: PCLは非推奨になりました。 .netstandard 2.0を使用している場合は、慣れているThread.Sleep
を使用できます。
Xamarin.Forms共有プロジェクト
このテンプレートには、Thread.Sleep
をサポートしないさまざまなプラットフォームが含まれています。 Windows UWP、Xamarin.AndroidおよびXamarin.iOSはサポートしていますが、Windows Phone 8.1およびWindows 8.1はサポートしていません。 2つのプロジェクトをアンロード/削除すると、ソリューションがビルドされます。 (System.Threadingを使用することを忘れないでください。App.csで)
使用してみることができます
await Task.Delay(milliseconds);
スレッドに遅延を入れたい場合。
あなたができるブロッキングのために
Task.Delay(TimeSpan.FromSeconds(5)).Wait();