我从Maui模板项目开始,在该项目中单击一个按钮来增加存储在MainPage类中的数字。
我删除了MainPage.xaml中除了标签之外的所有元素。我将这个标签命名为SpeedLabel,这样我就可以从MainPage类中更改它。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Metero.MainPage">
<Label
x:Name="SpeedLabel"
Text="0"
SemanticProperties.HeadingLevel="Level1"
SemanticProperties.Description="Welcome to dot net Multi platform App U I"
FontSize="80"
HorizontalOptions="Center"
VerticalOptions="Center" />
</ContentPage>
字符串
现在,在MainPage C#类(MainPage.xaml.cs)中,我将类更改为:
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
SpeedLabelUpdate();
}
private async void SpeedLabelUpdate()
{
while (true) {
count += 1;
SpeedLabel.Text = count.ToString();
await Task.Delay(100);
}
}
}
型
我期望这会产生一个在屏幕中心有一个正在增加的数字的应用程序。它在Windows上按预期工作,但在Android上不是。
在Android上,这个数字会像预期的那样上升到9,但随后它会重置为1,现在更新之间的延迟是1000ms而不是100。如果我让它继续,当它达到9时它会再次重置,现在延迟大约是10000毫秒。
3条答案
按热度按时间gwbalxhn1#
这就是你如何做到线程安全。试着看看这是否对你更有效。
字符串
inkz8wg92#
字符串
t5fffqht3#
这行代码:
字符串
在Visual Studio中显示警告。对吧?不要忽视这个警告。
警告建议添加
await
。但你不能这是一个暗示,你正在做的事情是不可靠的。通过创建一个
async
上下文来修复这个问题,你可以从中await
:型