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

时间:2018-05-31 08:22:28

标签: c# wpf progress-bar

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

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

提前感谢。

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

else

my progressbar.xaml:

var result2 = new List<bool>(listOfLists.Count != 0 ? listOfLists[0].Count : 0);

// Note the use of .Capacity here. It is listOfLists.Count != 0 ? listOfLists[0].Count : 0
for (int col = 0; col < result2.Capacity; col++)
{
    bool equal = true;

    for (int row = 1; row < listOfLists.Count; row++)
    {
        if (listOfLists[row][col] != listOfLists[0][col])
        {
            equal = false;
            break;
        }
    }

    result2.Add(equal);

}

1 个答案:

答案 0 :(得分:0)

如果您希望在此期间能够与您的应用程序进行交互,则无法入睡或执行阻止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/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl