winform程序在执行一个方法的同时,如何使用progressbar显示进度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform程序在执行一个方法的同时,如何使用progressbar显示进度?相关的知识,希望对你有一定的参考价值。

此方法最好不要修改。

先给progressbar设置个最大值,然后你可以在那个方法的执行过程中让progressbar的Value不断增加,从而达到显示进度的目的。比如:
progressbar.MaxValue = Count;

progressbar.Value = 0;

for(int i = 0;i < Count;i++)

你要做的操作
progressbar.value++;

你还可以在timer或新建一个线程,在里面根据相应的值,去对progressbar的Value进行设置。
参考技术A 用BackgroundWorker,可以注册他的Progress事件,接受进度信息。

在BackgroudnWorker里面的DoWork方法使用ReportProgress来报告进度本回答被提问者采纳
参考技术B 需要使用多线程,而且方法不修改的话,可能比较难。追问

能具体说下嘛?

参考技术C 设置他的value属性就OK了。 参考技术D 你获取进度,给控件progressbar.value赋值

Winform程序及dll打包成一个可执行的exe

使用场景

通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL。想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以采用该方法。

 方案一

利用ILMerge将exe及dll合并成一个新的exe

ILMerge下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

将ILMerge.exe复制到exe所在目录,执行以下命令

ILMerge.exe /ndebug /target:winexe /targetplatform:v4 /out:d:/output.exe input.exe /log BouncyCastle.Crypto.dll /log Dapper.dll 

/targetplatform 是用来指定版本号

/log 将dll打包进output.exe中,多个dll就用多个/log指定

方案二

利用压缩软件的自解压特性

1. 切换到Winform输出目录,全选并右键添加到压缩文件

2. 修改压缩文件名后缀为.exe

3. 切换到高级选项 -> 自解压选项,设置 -> 提取后运行:./程序名.exe,模式 -> 临时模式:勾选解包到临时文件夹,安静模式:选中全部隐藏

4. 确定并压缩,会生成一个exe文件,点击可执行

以上是关于winform程序在执行一个方法的同时,如何使用progressbar显示进度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# Winforms 应用程序中取消执行长时间运行的异步任务

C#winform调用外部自己写的一个控制台程序,每次都是一闪而过,根本不执行代码。控制台args[0]是传入参数

如何在 C# winform 中每分钟自动调用一个方法

C# winform程序,UI界面锁死。如何处理?

winform timer时间间隔小于执行时间

如何在 c++ winform 中同时运行两个函数?