我是XAML和c#的新手,我正在试图弄清楚如何更新进度条。
我在XAML中有以下代码:
<Hyperlink Click="Launch_Click">Launch Program</Hyperlink>
<ProgressBar x:Name="Progress1" x:Uid="Progress1" Minimum="0" Maximum="1" Value="0">
在C#中实现Launch_Click
private void Launch_Click(object sender, RoutedEventArgs e)
{
for(int i = 0; i<10; i++)
{
Progress1.Value +=0.1;
}
}
当我运行调试器时,Progress1.Value似乎正确更新,但在执行Launch_Click完成之前,进度条似乎似乎没有反映此更改。如何使进度条反映更改为Progress1.Value更新?
答案 0 :(得分:1)
Asynchrony证明对于访问UI线程的应用程序特别有价值,因为所有与UI相关的活动通常共享一个线程。如果在同步应用程序中阻止了任何进程,则会阻止所有进程。您的应用程序停止响应,您可能会认为它已失败,而不是等待它。
使用异步方法时,应用程序将继续响应UI。例如,您可以调整窗口大小或最小化窗口,或者如果您不想等待它完成,则可以关闭该应用程序。
C#中的async
和await
关键字是异步编程的核心。通过使用这两个关键字,您可以使用.NET Framework或Windows运行时中的资源创建异步方法,就像创建同步方法一样简单。使用async和await定义的异步方法称为异步方法。
所以您只需要像这样更改代码
public async void button1_Click( object sender , EventArgs e)
{
for(int i=0;i<100;i++)
{
Progress1.Value +=1;
await Task.Delay(10);
}
}