簡體   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