如何在每个循环周期更新一步进度条? C#

2023-12-19

使用 C#、Windows 窗体创建 .net 应用程序。如何在 100 个循环的每个循环中更新进度条 1 步? (我正在循环中处理 Excel 工作表。) 进度条控件位于 UI 类中,该类连接到控制器类,该控制器类连接到自定义类 (MVC 模式)。循环位于自定义类中。 我是否需要在每个方法中一路向下发送 UI 类实例,还是有更好的方法?

现在,进度条在循环结束后更新。 Application.doevents 和 .update 或 .refresh 不起作用。


假设下面是您的类负责使用其中的循环进行工作。添加一个事件来表明您的进度。然后从您的 UI 中简单地处理该事件并相应地更新进度条。

sealed class Looper
{
    public event EventHandler ProgressUpdated;

    private int _progress;
    public int Progress
    {
        get { return _progress; }
        private set
        {
            _progress = value;
            OnProgressUpdated();
        }
    }

    public void DoLoop()
    {
        _progress = 0;
        for (int i = 0; i < 100; ++i)
        {
            Thread.Sleep(100);
            Progress = i;
        }
    }

    private void OnProgressUpdated()
    {
        EventHandler handler = ProgressUpdated;
        if (handler != null)
        {
            handler(this, EventArgs.Empty);
        }
    }
}

你可以通过有一个来实现这个BackgroundWorker作为用户界面的一部分,在backgroundWorker.DoWork您拨打的事件looper.DoLoop()。然后在你的处理程序中looper.ProgressUpdated您可以致电的事件backgroundWorker.ReportProgress从 UI 线程增加进度条。

请注意,将进度本身包含在您所携带的信息中可能更有意义。ProgressUpdated事件(我只是不想写一个源自EventArgs来说明这一点;无论如何,你可能会明白图片)。

另请注意,除非您在与 UI 线程不同的线程上使用循环执行代码,否则上述内容实际上没有任何意义。否则,无论如何,您的所有工作都会在下一次 UI 刷新之前完成,因此进度条不会提供任何值(当循环完成时,它只会从 0 变为 100)。

只是一个如何实现此类事情的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在每个循环周期更新一步进度条? C# 的相关文章

  • Python `concurrent.futures`:根据完成顺序迭代 future

    我想要类似的东西executor map 除了当我迭代结果时 我想根据完成的顺序迭代它们 例如首先完成的工作项应该首先出现在迭代中 等等 这样 当且仅当序列中的每个工作项尚未完成时 迭代就会阻塞 我知道如何使用队列自己实现这一点 但我想知道
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • 哪个更快:清除集合或实例化新集合

    我的代码中有一些通用列表 其中有数十或数百个元素 有时我需要用其他对象重新填充此列表 所以问题是 调用什么会更快Clear 方法或创建一个new List
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 处理“未找到细胞”。 Excel 中的错误

    我正在使用 Excel VSTO 应用程序并使用以下代码在工作表中查找错误单元格 Excel Range rngTemp Excel Range rngErrorRange Excel Worksheet Sheet1 Excel Work
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 如何使用默认电子邮件客户端发送电子邮件?

    我想使用系统的默认电子邮件客户端 雷鸟 outlook 等 从 net windows 窗体应用程序发送电子邮件 我想预设主题和正文 我认为有一种方法可以通过向 Windows 资源管理器发送类似的内容来做到这一点 mailto 电子邮件受
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死
  • 使用Python的线程模块调用ctypes函数比使用多处理更快?

    我一生都无法找出这个问题的答案 我编写了一个可以执行数百次繁重计算的脚本 我有一个绝妙的主意 将这些计算任务编写为 C 然后使用 Python 的 ctypes 与它们交互 我心想 我什至可以使用并行性进一步优化它 我最初的方法是使用线程
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个
  • Boost.asio和异步链,unique_ptr?

    我对异步编程不太熟悉 我有一个问题 我的问题如下 给出 boost asio 中 C 11 的 echo server 示例 http www boost org doc libs 1 60 0 doc html boost asio ex
  • 从脚本启用/禁用 GameObject 组件 [Unity3D]

    我需要获取一个脚本中设置的布尔值 放入名为 bouclier 的变量 以启用或禁用游戏对象 该变量位于游戏对象 Player 中 此处右下角 我需要启用或禁用这个游戏对象 Bouclier01 为此 我将脚本附加到游戏对象 Bouclier
  • 使用 CodeDOM 将程序集添加到 BuildManager 会导致间歇性错误

    我正在使用 CodeDOM 在运行时创建内存中程序集 如下所示 public Assembly Compile CodeCompileUnit targetUnit string path Path GetDirectoryName new
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务

随机推荐

  • 如何调整mysql命令行的显示设置?

    mysql 命令行未正确显示结果 我的意思是表的某些列位于第一行 某些列位于第二行 输出也分为两行 如何调整这些设置才能正确显示结果 您可以使用 G命令 而不是 在 SQL 查询的末尾 Example SELECT FROM USER G
  • 使用NamedParameterJdbcTemplate将数据发送到DataBase

    package com techm template import java sql Types import java util Date import java util HashMap import java util Map imp
  • 如何计算 TCP 校验和

    我正在编写一个内核模块 它使用 Netfilter 挂钩来修改一些 TCP 标头信息 显然 在发送之前 我想重新计算校验和 我还在接收端编辑了标头 所以我也需要在那里重新计算它 在网上搜索 我发现有人说我可以简单地将其设置为0 它会为我计算
  • 排除迁移的属性[重复]

    这个问题在这里已经有答案了 I have 特性在我的模型上 我不想在中生成字段tables迁移后 是否可以排除特性实体框架核心迁移 我的模型上是否有模型的属性或某些 Fluent API 方法DbContext为了这 您应该能够指定 Not
  • WordPress:如何从自定义分类查询中排除子分类中的帖子?

    我的 WordPress 主题有一个名为 集合 的自定义分类法 自定义分类是分层的 因此存在子集合 我有一个名为 书籍 的集合和一个名为 小说 的子集合 有些帖子只在 书籍 中 有些帖子则在 小说 中 我希望 书籍 集合的页面仅显示主 书籍
  • C# 中的可滚动消息框

    我在VS2008 C 中使用Addin 我需要显示消息 错误消息和其他消息 我不知道消息的长度 因此我想使用 Scrollable MessageBox 我找到了 2007 年的这篇文章 作者 Mike Gold 2007 年 7 月 30
  • NSMutableArray arrayWithArray:与 initWithArray:

    这些都在我的应用程序中工作 没有任何明显的区别 1 theArray NSMutableArray alloc initWithArray NSKeyedUnarchiver unarchiveObjectWithData theData
  • 随机有理数生成

    有理数是可数的 例如 此代码在开区间 0 1 中查找第 k 个有理数 排序为 n1 d1 是在之前 n2 d2 if d1
  • 各个平台的保留文件名是什么?

    我不是在询问文件名的一般语法规则 我的意思是那些不知从哪里跳出来咬你的陷阱 例如 尝试在 Windows 上将文件命名为 COM From http www grouplogic com knowledge index cfm fuseac
  • iPhone 5 上的 Bootstrap 3 不是 XS

    我在制作 Bootstrap 3 网站时遇到了一个非常奇怪的错误 由于某种原因 它不适应较小的 iPhone 屏幕尺寸 导航栏没有折叠 并且 col xs 似乎被忽视 我仔细检查了 iPhone 上的屏幕宽度 320 像素 当我调整浏览器大
  • 如何在 Java GUI 中显示一行?

    我想在 Java swing 中的两个图像之间画一条线 我找到了不同的绘制线条的方法 但没有一种是我想要的方式 这让我想也许我只需要在我想要的地方插入一条线条的图像 无论如何 我想要类似的东西 O O O O 要显示在 O 是图像的位置 而
  • Javascript 登录系统检查 if ("UserPassword") == Undefined 不起作用

    所以基本上在一个 html 文件中 我有一个输入字段 其 id 为 UserPassword 在我的 js 文件中 我有一个函数 register 它会检查您是否已注册 如果没有 则检查这是否是您第一次登录 如果没有 则检查您输入的密码是否
  • Mongodb中的聚合查询返回特定字段

    文件样本 id ObjectId 53329dfgg43771e49538b4567 u id ObjectId 532a435gs4c771edb168c1bd7 n Salman khan e email protected cdn c
  • Owin SelfHost WebApi - 客户端在响应期间关闭连接会引发异常?

    我正在运行一个基于 Owin Selfhost 的 WebApi 其中我通过以下方式放入了 API 未处理的异常记录器 config Services Add typeof IExceptionLogger apiExceptionLogg
  • rake db:test:prepare 不创建所有表

    注意 使用 Rails 3 0 7 Postgresql 8 4 4 1 rake 0 8 7 尝试让 Rails 测试正常工作 命令 rake db test prepare 似乎工作正常 rake db test prepare t i
  • 如何在html中嵌入图像并通过msdb.dbo.sp_send_dbmail将html作为电子邮件发送?

    我可以使用 msdb dbo sp send dbmail 以 html 格式发送电子邮件 仅就格式而言 它对于文本来说非常好 例如 EXEC msdb dbo sp send dbmail recipients p recipients
  • 使用不同的编码和库解析 CSV 文件

    尽管有很多关于该主题的线程 但我在解析 CSV 时遇到了麻烦 它是从 Adwords 关键字规划器下载的 csv 文件 以前 Adwords 可以选择将数据导出为 纯 CSV 可以使用 Ruby CSV 库进行解析 现在可以选择 Adwor
  • 是否存在不应在 .pch 文件中添加所有导入的原因?

    我主要指的是应用程序级导入 而不是构建库时的导入 在这种情况下 很明显为什么应该避免导入 pch 文件内的标头 要点是 pch文件的优点是它可以预编译一次并且无需处理 如果您将所有应用程序标头导入 pch 每次更改其中任何一个标头时都必须重
  • 如何创建具有多个子行(嵌套表)的 jQuery 数据表?

    问题 我需要创建一个具有嵌套表格式的表 当用户单击加号按钮时 它应该显示嵌套表 如果他们点击减号按钮 它应该隐藏 我已经完成了jquery datatable 它工作正常 但我无法显示子表的多行 我已经尝试了很多次 但无法显示正确的格式 这
  • 如何在每个循环周期更新一步进度条? C#

    使用 C Windows 窗体创建 net 应用程序 如何在 100 个循环的每个循环中更新进度条 1 步 我正在循环中处理 Excel 工作表 进度条控件位于 UI 类中 该类连接到控制器类 该控制器类连接到自定义类 MVC 模式 循环位