几何尺寸与公差论坛

 找回密码
 注册
查看: 364|回复: 2

分析这段进度条代码的优缺点

  [复制链接]
发表于 2023-7-23 06:54:31 | 显示全部楼层 |阅读模式
<ProgressBar Grid.Row="10" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,2,4,4" IsIndeterminate="False" Height="20" x:Name="prgStats"/>

        Thread thread = new Thread(new ThreadStart(() =>
        {
            for (int i = 0; i <= 100; i++)
            {
                this.Dispatcher.BeginInvoke((ThreadStart)delegate { this.prgStats.Value = i; }); //progressBar1是进度条控件的名字。
                Thread.Sleep(100);
            }

        }));
        thread.Start(); 分析这段代码的优缺点
 楼主| 发表于 2023-7-23 06:54:46 | 显示全部楼层
优点:

使用了多线程,可以在后台执行任务,不会阻塞主线程。
使用了Dispatcher.BeginInvoke方法,可以在UI线程更新进度条的值,避免了跨线程访问UI元素的问题。
缺点:

代码中使用了硬编码的方式设置进度条的最大值和更新频率,不够灵活。
没有处理线程的异常情况,可能会导致程序崩溃或出现其他问题。
没有提供取消或暂停任务的功能,无法对任务进行控制。
没有使用更高级的异步编程模型,如Task或async/await,可能会导致代码可读性和维护性较差。"
 楼主| 发表于 2023-7-23 06:56:46 | 显示全部楼层
private async void StartProgressBar()
{
    try
    {
        for (int i = 0; i <= 100; i++)
        {
            await Task.Delay(100);
            prgStats.Value = i;
        }
    }
    catch (Exception ex)
    {
        // 处理异常情况
    }
}

// 调用方法
StartProgressBar();
```"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-9 03:45 , Processed in 0.037761 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表