当用户启动应用程序5秒钟然后将他带到应用程序时,我希望我的App徽标可见。我正在做这样的事情。
MainPage.xaml中:
<Grid x:Name="ContentPanel" LayoutUpdated="ContentPanel_LayoutUpdated">
<Image Name="startLogo" Source="/Assets/startScreen.png"></Image>
<phone:WebBrowser Name="webView"
IsScriptEnabled="True"
Grid.Row="0"
IsGeolocationEnabled="True"
ScriptNotify="webView_ScriptNotify"
NavigationFailed="webView_NavigationFailed"
Navigated="webView_Navigated"
Navigating="webView_Navigating"
SizeChanged="webView_SizeChanged"
VerticalAlignment="Stretch">
</phone:WebBrowser>
</Grid>
MainPage.xaml.cs中:
public MainPage()
{
InitializeComponent();
startLogo.Visibility = System.Windows.Visibility.Visible;
webView.Visibility = System.Windows.Visibility.Collapsed;
Thread displayStartScreen = new Thread(() =>
{
this.Dispatcher.BeginInvoke(() =>
{
Thread.Sleep(5000);
startLogo.Visibility = System.Windows.Visibility.Collapsed;
webView.Visibility = System.Windows.Visibility.Visible;
});
});
displayStartScreen.Start();
}
但有了这个,应用程序在前5秒内没有显示任何内容,然后显示webView
我在这做错了什么。有什么帮助吗?
由于
答案 0 :(得分:2)
Thread.Sleep(5000);
在显示startLogo之前阻止整个UI线程事件。当睡眠停止时,它会显示webView正确等待。
请尝试使用以下代码替换调度程序:
this.Dispatcher.BeginInvoke(async () =>
{
await Task.Delay(5000);
startLogo.Visibility = System.Windows.Visibility.Collapsed;
webView.Visibility = System.Windows.Visibility.Visible;
});
这样只有调度员将被暂停,徽标将显示5秒钟。 希望这会有所帮助。
答案 1 :(得分:0)
我弄明白了这个错误。把
Thread.Sleep(5000);
内部调度员让我的主线程处于睡眠状态。我刚从那里删除它并把它放在行
之前this.Dispatcher.BeginInvoke(() =>
这将使displayStartScreen
线程处于睡眠而不是主线程。现在工作正常。
由于