繁体   English   中英

c#wpf不同窗口中的进度栏

[英]c# wpf Progress bar in different window

我试图弄清楚如何在我的应用程序中使用进度条。 我有一个注销表单作为主窗口。 我想要进度条的另一个窗口。 在我的主窗口代码中,有15秒的睡眠时间。 我希望用户在进度栏中看到进度,如果15秒完成,则需要关闭进度栏。 我想知道是否可以将进度条的代码放入主窗口代码中。 或者也许是一种让进度条与15秒等待时间交互的方法。

我是编码的新手,所以解释代码对我理解代码很有帮助。

提前致谢。

我的代码在进度栏窗口中:

public partial class ProgressBar : Window
    {
        public ProgressBar()
        {
            InitializeComponent();
        }

        private void Window_ContentRendered(object sender, EventArgs e)
        {
            for (int i = 0; i <= 15; i++)
            {
                pbStatus.Value++;
                System.Threading.Thread.Sleep(1000);
            }
        }
    }

我的progressbar.xaml:

<Window x:Class="Sessie_Afmeld_Applicatie.ProgressBar"
         WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Sessie_Afmeld_Applicatie"
        mc:Ignorable="d"
        Title="Voortgang" Height="100" Width="300">
    <Grid>
        <ProgressBar Minimum="0" Maximum="150" Name="pbStatus"  Margin="25,23,37,23" Foreground="#FF13B931" ValueChanged="pbStatus_ValueChanged"   />
        <Label Content="Label" HorizontalAlignment="Left" Margin="125,66,0,0" VerticalAlignment="Top"/>
    </Grid>
</Window>

如果您希望在此期间能够与应用程序进行交互,则无法入睡或执行其他阻止UI线程的操作。

您应该在后台线程上执行任何繁重且可能长时间运行的工作。 在您的特定示例中,可以使用Task.Delay方法异步等待:

public partial class ProgressBar : Window
{
    public ProgressBar()
    {
        InitializeComponent();
    }

    private async void Window_ContentRendered(object sender, EventArgs e)
    {
        for (int i = 0; i < 15; i++)
        {
            pbStatus.Value++;
            await Task.Delay(1000);
        }
        Close();
    }
}

如果调用服务方法或类似方法,则可以使用任务并行库(TPL)并启动一个新Task 但是,这是一个很大的话题。 请参考MSDN以获取更多信息: https : //docs.microsoft.com/zh-cn/dotnet/standard/parallel-programming/task-parallel-library-tpl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM