[英]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.