在 Xamarin.Forms 中使用 Thread.Sleep
本文关键字:Thread Sleep Xamarin Forms | 更新日期: 2023-09-27 18:37:13
我想执行以下内容
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
有两个 Xamarin.Forms 模板:
-
Xamarin.Forms 可移植类库
由于 PCL 子集机制,您没有机会获得
Thread.Sleep
。2017 年更新:PCL 现已弃用。如果使用 .netstandard 2.0,则可以像习惯一样使用
Thread.Sleep
。 -
Xamarin.Forms Shared Project
此模板包含不支持
Thread.Sleep
的不同平台。Windows UWP,Xamarin.Android和Xamarin.iOS支持它,Windows Phone 8.1和Windows 8.1不支持。如果卸载/删除 2 个项目,则会生成解决方案。(不要忘记使用System.Threading;在你的应用程序中.cs)
你可以尝试使用
await Task.Delay(milliseconds);
如果你想在你的线程中放置延迟。
对于阻止,您可以做
Task.Delay(TimeSpan.FromSeconds(5)).Wait();