Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
仅在任务栏中显示的WPF窗口_Wpf_Taskbar_Splash Screen - Fatal编程技术网

仅在任务栏中显示的WPF窗口

仅在任务栏中显示的WPF窗口,wpf,taskbar,splash-screen,Wpf,Taskbar,Splash Screen,我不确定我想做的是否合适,所以我会解释一下 我们有一个大型应用程序,需要一段时间才能加载。所以我们有一个启动屏幕。 启动屏幕导致远程桌面(终端服务器)上的加载时间过长。 因此,为了缓解这种情况,我们希望在加载RDP时隐藏启动屏幕。 但我们仍然需要至少向用户显示应用程序正在加载 因此,我想也许只是在任务栏(而不是系统托盘)中显示一些东西,因为一旦应用程序完全加载(并被主窗体的任务图标替换),它就会消失。 然而,我所看到的任何WPF解决方案都需要一个与任务栏状态匹配的可见窗体/窗口 有没有办法在任务

我不确定我想做的是否合适,所以我会解释一下

我们有一个大型应用程序,需要一段时间才能加载。所以我们有一个启动屏幕。 启动屏幕导致远程桌面(终端服务器)上的加载时间过长。 因此,为了缓解这种情况,我们希望在加载RDP时隐藏启动屏幕。 但我们仍然需要至少向用户显示应用程序正在加载

因此,我想也许只是在任务栏(而不是系统托盘)中显示一些东西,因为一旦应用程序完全加载(并被主窗体的任务图标替换),它就会消失。 然而,我所看到的任何WPF解决方案都需要一个与任务栏状态匹配的可见窗体/窗口

有没有办法在任务栏上显示一些东西而不显示WPF窗口


或者有没有其他方法可以在屏幕上显示应用程序加载状态而不显示任何内容?

我确实认为您需要调查问题的根本原因。可能是线程和并行性

然而,一个简单的解决方案就是创建一个隐藏窗口。一个透明的,没有边界或任何东西的人。它甚至可以将赌注设置为0,0。这样,您就可以获得所需的任务栏项

我们也有同样的问题

在远程桌面上,我们执行了以下步骤

  • 我们将启动窗口配置为不允许调整大小,并且只有最小化和关闭按钮

  • 我们删除了WindowStyle=None设置,以便显示启动窗口的标题栏

  • 我们将飞溅窗口的宽度和高度设为零。这样,您在屏幕上看到的就是标题栏的一个蓝色小矩形,上面有文本“正在加载…请稍候…”和最小化并关闭按钮

  • 我们还使用窗口的内核调用来禁用标题栏的关闭按钮。这样,用户无法取消启动窗口

  • 所以用户所能做的就是最小化或从任务栏恢复

  • 恢复后,他看到的只是标题栏上带有“加载…”文本的蓝色矩形。通过这种方式,窗口也在任务栏上占据了它的位置,但隐藏了它的启动动画,用户也知道启动屏幕正在加载。为此,您还可以通过添加更多句号来更新标题栏的文本

    装载。请稍等

    装载。请稍候

    装载。请稍等


    装载。请稍候。

    您正在使用
    SplashScreen
    类吗?你能解释一下装载时间过长的原因吗?这可能是因为你的闪屏上有动画吗?你看到这个了吗?加载时间过长似乎与应用程序(WinForms)的绘制问题有关。因为它有大量的控件,所以绘制时间更长。另外,因为它位于处理HWND的另一个框架之上。但我发现的性能问题是,当闪屏仍然可见时,应用程序的绘制时间超出了正常预期(>1分钟)。直到启动屏幕被隐藏,应用程序才缩减到仅需1~3秒即可绘制。我只能猜测两个窗口之间的RDP存在一些屏幕缓冲区问题。不,我没有意识到有SplsahScreen类。我们的飞溅屏幕没有动画。只是动态的(为加载状态更新文本),带有WPF效果和大PNG。除去这个影响并没有改善RDP的加载时间。好吧,我不能将两者都标记为答案,但是AngelWPF和Paul的回答都是相关的。在已有的Splash窗口中,现在有了另一个ShowSplash()方法。*删除了ShowInTaskbar=“False”*将大小设置为0,0*将子控件大小设置为0,0。*增加标题。*添加了一个图标。其他设置必须保留。我们已经研究了性能问题,但这与许多从较旧的应用程序转换而来的遗留代码有关,该应用程序现在位于一个框架上,以模拟大部分旧的基础。