Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使启动屏幕显示更长时间_C#_.net_Windows Phone 7_Xaml_Windows Phone 8 - Fatal编程技术网

C# 如何使启动屏幕显示更长时间

C# 如何使启动屏幕显示更长时间,c#,.net,windows-phone-7,xaml,windows-phone-8,C#,.net,Windows Phone 7,Xaml,Windows Phone 8,我有一个我正在开发的应用程序。我需要启动屏幕显示至少1整秒(最好最多3秒)-足够长,让您能够瞥见整个启动屏幕,并能够阅读标题(舒适,不必在它消失之前努力捕捉) 我读过MSDN上Windows Phone 8的Splashscreens上的文档,上面写着: 通常,只有当你的应用程序 加载速度异常缓慢,或者如果您想向 应用程序。如果您决定在应用程序中使用闪屏,您必须 两种选择 我的应用程序不是那种用户需要快速获取、快速完成某件事然后离开应用程序的应用程序,因此没有必要匆忙行事 因此,我成功地使spl

我有一个我正在开发的应用程序。我需要启动屏幕显示至少1整秒(最好最多3秒)-足够长,让您能够瞥见整个启动屏幕,并能够阅读标题(舒适,不必在它消失之前努力捕捉)

我读过MSDN上Windows Phone 8的Splashscreens上的文档,上面写着:

通常,只有当你的应用程序 加载速度异常缓慢,或者如果您想向 应用程序。如果您决定在应用程序中使用闪屏,您必须 两种选择

我的应用程序不是那种用户需要快速获取、快速完成某件事然后离开应用程序的应用程序,因此没有必要匆忙行事

因此,我成功地使splashscreen出现。但是,问题是应用程序加载太快,你无法注意到屏幕上的飞溅


如何通过编程使启动屏幕显示一两秒钟?你能定个时间吗?你能让它保持更长时间吗?

在加载阶段,你能让应用休眠一秒钟吗

在加载应用程序时会显示splashscreen, 因此,时间取决于代码的复杂性。您可以创建一个 使用SplashScreen创建XAML页面,将其设置为入口点,等待 然后重定向到您的主页

资料来源:

我不敢相信我的记忆力有时会有多差。我刚刚在我的一个旧WP8应用程序中发现:

    // Code to execute when the application is launching (eg, from Start)
    // This code will not execute when the application is reactivated
    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
            System.Threading.Thread.Sleep(DateTime.Now.TimeOfDay.Seconds + 3000);
    }

工作起来很有魅力!将其放入App.xaml.cs文件中,它将显示SplashScreen(如果有)3秒钟。

快速搜索会显示另一个有此问题的用户:


只需创建一个与初始屏幕完全相同的页面,并在初始屏幕之后立即显示该页面。一两秒钟后从它开始导航


但是,允许用户在设置中关闭它。没有人愿意等待应用加载的时间超过每次加载所需的时间

您想要使用的解决方案(thread.sleep)不是一个很好的解决方案,它应该只用于您不打算放入Windows应用商店的应用。微软的官方解决方案是使用XAML页面作为初始屏幕(由polymorphin发布)。我以前使用过xaml页面解决方案,它比阻塞UI线程要好得多,原因有二:

  • 阻止UI线程不好,可能会在windows应用商店验证过程中标记应用程序,使其无法通过
  • 在启动屏幕期间,您有时间使用异步模型初始化应用程序组件
  • 在以前的一个项目中,我必须显示splashscreen 3秒钟(这是一个动画gif),在此期间,我能够与服务器建立连接,并使用类似以下代码启动地理定位服务: e、 g

    List tasks=newlist();
    tasks.Add(Task.Delay(3000));//启动屏幕使用的时间
    添加(MyComponent1.DoWorkAsync());
    添加(MyComponent2.DoWorkAsync());
    等待任务。何时(任务)//等待所有任务完成
    
    我发现图托:

    基本上你需要做:

    • 创建一个xaml“SplashPage.xaml”
    • 进入“SplashPage.xaml”的XML:

      • 要隐藏状态栏,请更改:shell:SystemTray.IsVisible=“True”->shell:SystemTray.IsVisible=“False”
      • 添加您的图像:
    • 进入“SplashPage.xaml”的代码:

    • 将您需要的所有代码添加到“Loader”中 大宗报价
    • 当您想显示“MainPage.xaml”时,请拨打:
    • 进入“MainPage.xaml”的代码:
    • 要重置堆栈中的所有页面,请执行以下操作(使用该代码可以从堆栈中删除SplashPage:D):

    就个人而言,即使我不需要快速访问应用程序,每次启动屏幕出现超过一秒钟时,它仍然会让我感到恼火。甚至一秒钟都已经差不多了。然后在设置中禁用它。设置->“缩短Splashscreen”。。。。是 啊好的!我只是想“如果可能的话,首先为什么不呢?!”你想让你的应用程序在喷溅屏幕上脱颖而出,还是在应用程序本身上脱颖而出?为什么把应用程序限制在它能脱颖而出的地方?嘿,这太棒了。你让我不用重新提交我的应用程序。谢谢!:-)
    SplashScreen splashScreen = new SplashScreen();
    splashScreen.Show(false);
    
    List<Task> tasks=new List<Task>();
    tasks.Add(Task.Delay(3000));  // time used by splash screen
    tasks.Add(MyComponent1.DoWorkAsync());
    tasks.Add(MyComponent2.DoWorkAsync());
    await Task.WhenAll(tasks);   //wait for all the task to complete
    
    public SplashPage()
            {
                InitializeComponent();
                Loaded += SplashPage_Loaded;
            }
    
            void SplashPage_Loaded(object sender, RoutedEventArgs e)
            {
                //ADD YOUR CODE
            }
    }
    
    NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    
    NavigationService.RemoveBackEntry();