【问题标题】:How to Pause an Application without Freezing the UI如何在不冻结 UI 的情况下暂停应用程序
【发布时间】:2014-04-08 03:30:26
【问题描述】:

在我的点击事件中,我想在一定时间内显示一个不确定的进度条,然后恢复应用程序。我遇到的问题是我无法显示进度条。有人可以帮忙吗?

private void RunTestButton_Click(object sender, RoutedEventArgs e)
    {
        if (testRunning == false)
            {
                testRunning = true;

                //Set progress bar visibility
                PerformanceProgressbar.Visibility = Visibility.Visible;
                PerformanceProgressbar.IsIndeterminate = true;

                //Tell the app to pause for 5 seconds so the user sees the progress bar


                //Set progress bar visibility
                PerformanceProgressbar.IsIndeterminate = false;
                PerformanceProgressbar.Visibility = Visibility.Collapsed;

                testRunning = false;
            }
    }

【问题讨论】:

    标签: c# windows-phone-8 progress-bar


    【解决方案1】:

    您可以调用Task.Delay .. 和await 结果:

    await Task.Delay(5000);
    

    您还需要确保将您的活动标记为async

    private async void RunTestButton_Click(object sender, RoutedEventArgs e)
    

    【讨论】:

    • 谢谢。经过一些研究,我实际上在我的应用程序的另一部分中使用了异步方法,这绝对看起来很有希望。稍后我将不得不对其进行测试,但我的主要问题是,这将允许方法中的其余进程运行和更新屏幕,同时还将方法的完成暂停 5 秒?我仍然对错综复杂的事情有点模糊。
    • 正确.. 会的。 async/await 的内部结构非常有趣。简短版是的,这将阻止当前方法但继续运行其他代码.. 包括 UI 线程中的代码。
    【解决方案2】:

    PerformanceProgressbar 是控件,所以你应该把它放在你的页面上(也使用淡入淡出)。

    但是如果您需要在 UI 线程上执行某些任务(您真的需要它吗?)我建议您通过在页面上显示半透明边框来淡化页面,并在状态栏中显示 ProgressIndicator。它是系统对象,即使应用程序被冻结也会运行。

    【讨论】:

    • 我很喜欢你的想法。我假设状态栏是指系统托盘。唯一的问题是它运行时会显示整个系统托盘,时间和一切都正确吗?
    • @Matthew 是系统托盘与时间。您可以在那里显示消息和进度指示器,因此即使应用程序完全冻结它也会运行
    • 我想试试这个,但我需要在没有进度条且进度条处于活动状态的情况下显示文本。我在这里看到了对此的引用stackoverflow.com/questions/18560301/…,但您能否提供更好的解决方案?尚未测试这是否适用于设置 IsVisible = true 以显示文本而不是顶部的滚动点。
    • @Matthew 我没有更好的解决方案。你设置 IsIndeterminate = false, Value = 0 和 Show title without progressbar.
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 2012-02-07
    • 2011-12-27
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多