【问题标题】:Async methods in C# configuring splash screen controlsC# 中的异步方法配置启动画面控件
【发布时间】:2016-01-18 09:41:11
【问题描述】:

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

    public async void OpenSplashScrn()
    {
        splash.Show();
    }

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

    public void HideSplashScrn()
    {
        splash.Hide();
    }

我用 await 尝试过,但不知道如何正确调用它。启动启动画面确实有效,但调用其他方法时 Labeltext 不会更改。我还想按如下顺序调用这些方法:打开,更改文本(几次),隐藏,打开,更改文本(几次),隐藏。我没有找到解决这个具体问题的方法。 谢谢!

编辑:

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

        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# wpf asynchronous splash-screen


【解决方案1】:

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

所以显示的方法应该确实有效(除了async 修饰符根本没有效果,因为没有await)。至于为什么您的标签文本不会更改,您需要对此进行调试。是线

splash.messageLabel.Content = messageText;

真的用正确的值调用了吗?

【讨论】:

  • 我想要一个启动画面,所以我应该用 .Show() 调用它。是的,它使用正确的值调用,但 labeltext 没有改变。
  • 没有。即便如此,也没有任何改变。为什么会这样?
  • 我想我应该让这个异步来从我的主窗口调用控件吗?
  • 当我试图将属性放入启动画面类时,getter 告诉我他不能将字符串转换为对象。它对你有用吗?你在做别的事然后我吗? :(
  • @Jackson30 不,我只是用字符串设置标签的Content。我们无法在这些 cmets 中解决此问题,如果您有新信息,请更新您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
相关资源
最近更新 更多