C# 中的异步方法配置初始屏幕控件

本文关键字:屏幕 控件 配置 异步方法 | 更新日期: 2023-09-27 18:30:44

我正在尝试通过异步方法显示和管理启动画面,但真的不知道如何管理它。这些是我的方法:

    public async void OpenSplashScrn()
    {
        splash.Show();
    }
    public async void ChangeSplashScrnMessageText(string messageText)
    {
        splash.messageLabel.Content = messageText;
    }
    public void HideSplashScrn()
    {
        splash.Hide();
    }

我用等待尝试了它,但不知道如何正确调用它。启动初始屏幕确实有效,但在调用其他方法时,标签文本不会更改。我还想按以下顺序调用方法:打开,更改文本(几次),隐藏,打开,更改文本(几次),隐藏。我没有找到这个具体问题的解决方案。谢谢!

编辑:

似乎这不是异步问题。调用函数时多一点代码:

        splash = new SplashScreen(this);
        OpenSplashScrn();
        ChangeSplashScrnMessageText("Searching Data..."); 

初始屏幕的 Xaml 代码:

 <Window x:Name="splashScrn" x:Class="Window1.SplashScreen"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Bitte warten..." Height="127" Width="336" WindowStyle="None" WindowStartupLocation="CenterScreen" Topmost="True">
<Grid Margin="0,0,2,2" Background="#FF386C89">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="47*"/>
        <ColumnDefinition Width="254*"/>
        <ColumnDefinition Width="25*"/>
    </Grid.ColumnDefinitions>
    <Label x:Name="messageLabel" Content="Message" HorizontalAlignment="Left" Margin="73,45,0,0" VerticalAlignment="Top" FontWeight="Bold" Grid.Column="1"/>
</Grid>

C# 中的异步方法配置初始屏幕控件

如果您只使用 splash.Show 而不使用 splash.ShowDialog则初始屏幕将是非模式的。如果这是您想要的,则无需使用任何async方法。
通过使用Show应用程序的控制流将保留在调用窗口中。

所以显示的方法实际上应该有效(除了async修饰符根本没有效果,因为没有await)。至于为什么你的标签文本没有改变,你需要调试一下。是线

splash.messageLabel.Content = messageText;

真的用正确的值调用吗?