【问题标题】:"Not responding" message if the user clicks in the SplashScreen | WPF如果用户在 SplashScreen 中单击,则会出现“未响应”消息 | WPF
【发布时间】:2018-08-09 07:44:49
【问题描述】:

我有一个 WPF 应用程序需要一点时间才能启动,我有一个 SplashScreen,它告诉用户稍等片刻,直到应用程序完全加载。到目前为止一切顺利。

问题是用户(像往常一样),如果他开始绝望地点击 SplashScreen 中的任何地方,他会收到典型的 Windows™ 消息“此程序没有响应”,在此消息框中他可以选择关闭程序,这将关闭另一个我在其中进行所有加载的过程,但不是 WPF 应用程序。然后 WPF 应用程序启动,但您无法对其执行任何操作。如果用户单击几次,则不会发生此行为。

所以我的问题是,是否可以阻止来自 Windows™ 的此消息,或者阻止用户与 SplashScreen 的交互?

提前感谢您的建议。

【问题讨论】:

  • 最终,您的用户会选择 "close" 一次或两次,然后意识到他们不应该这样做。或者你可以在你的启动画面上显示“请不要拼命点击这个启动画面”
  • 我猜你正在 UI 线程上进行“加载”,这会阻止 UI 交互。发生这种情况时,当您多次单击它时,它会显示“未响应”。在不同的线程上更改加载部分,或使用异步。
  • 这是有道理的@LupuSilviu,问题是,这个加载的东西在 App.xaml.cs 中,如果我启动另一个线程进行加载,UI 将会出现并且也不会起作用
  • 那么,您想在不显示窗口的情况下进行加载吗?如果您删除 StartupUri 路径,并使用 window.Show() 从代码中显示窗口,则可以这样做。如果您需要模式帮助,您需要发布一些代码。
  • 显示斜线窗口,在背景上初始化数据,然后显示主窗口。

标签: c# wpf windows mvvm


【解决方案1】:

任何缓慢的进程都应该在 GUI 的单独线程中。这将使 GUI 对用户输入保持响应。

顺便说一句,如果您显示一个进度条(即使是每秒仅移动 1% 的假进度条),用户应该更加耐心,因为他们可以看到应用程序没有崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2010-12-10
    • 2018-01-20
    • 2012-05-29
    • 2020-01-03
    相关资源
    最近更新 更多