C# 模式窗口下更新进度条

public partial class frmProcessBar : Form
    {
        public frmProcessBar()
        {
            InitializeComponent();
        }

        public bool Increase(int nValue)
        {
            if (nValue > 0)
            {
                if (progressBar1.Value + nValue < progressBar1.Maximum)
                {
                    progressBar1.Value += nValue;
                    return true;
                }
                else
                {
                    progressBar1.Value = progressBar1.Maximum;
                    this.Close();
                    return false;
                }
            }
            return false;
        }
    }
private frmProcessBar myProcessBar = null;
        private delegate bool IncreaseHandle(int nValue);
        private IncreaseHandle myIncrease = null;

private void btnRun_Click(object sender, EventArgs e)
        {
            Thread thdSub = new Thread(new ThreadStart(ThreadFun));
            thdSub.Start();
        }

        private void ShowProcessBar()
        {
            myProcessBar = new frmProcessBar();
            // Init increase event
            myIncrease = new IncreaseHandle(myProcessBar.Increase);
            myProcessBar.ShowDialog();
        }

        private void ThreadFun()
        {
            MethodInvoker mi = new MethodInvoker(ShowProcessBar);
            this.BeginInvoke(mi);
            bool blnIncreased = false;
            object objReturn = null;
            do
            {
                Thread.Sleep(50);
                objReturn = this.Invoke(this.myIncrease,new object[] { 1 });
                blnIncreased = (bool)objReturn;
            }
            while (blnIncreased);
        }

C# 模式窗口下更新进度条

时间: 2024-10-08 23:19:19

C# 模式窗口下更新进度条的相关文章

黑窗口下带进度条的http下载

package main import ( "flag" "fmt" "io" "log" "net/http" "os" "strconv" "strings" "time" "github.com/cheggaaa/pb" ) var ( url = flag.String("url"

android一个上传图片的例子,包括如何终止上传过程,如果在上传的时候更新进度条(一)

先上效果图: Layout为: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent&quo

WPF BackGroundWord 异步加载更新进度条示例

1 <Window x:Class="AsynchronousLoading.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/e

通过实现Linux下的进度条引发的一系列问题

Linux下实现进度条 代码如下:  1 #include<stdio.h>   2 #include<unistd.h>   3 void Progess()   4 {   5         char arr[101];   6         memset(arr,'\0',sizeof(arr)/sizeof(char));   7         char state[5]="|/-|\0";   8         int i=0;   9    

[wxWidgets]_[0基础]_[经常更新进度条程序]

场景: 1. 非常根据程序的进展需要处理业务,以更新进度条,进度条的目的是为了让用户知道业务流程的进度.一个进度条程序更友好,让用户知道在程序执行.不是没有反应. 2. 现在更新见过这两种方法的进展.事件(信号,队列)的发送让主线程依照发送的顺序来更新进度条,一种是设置一个全局整形变量, 通过执行定时器的方式来更新进度条.第一种不适合在更新频率比較高的地方,比方一秒钟发送了20个事件,这样会造成主线程忙于处理事件界面出现假死状态. 所以最好的办法就是使用第2种通过定时器更新进度条,设置一个合理的

shell下的进度条和最大最小平均值

进度条 C语言下的进度条参考我原来的一篇blog->进度条 function proc() {      i=0       str=''      arr=('|' '/' '-' '\\')      index=0      while [ $i -le 100 ]      do          printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}"

ios线程练习更新进度条

类似于,我们加载网页时候的进度条,我们来看看它们是怎么工作的. #import "ViewController.h" @interface ViewController () { UIProgressView *_view; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //设置进度条 _view = [[UIProgressView alloc]init]; _view

[wxWidgets]_[初级]_[常见更新进度条的方案]

场景: 1. 很多程序需要根据处理业务的进度来更新进度条,进度条的目的是让用户能知道业务处理的进度,有进度条的程序更友好,让用户知道程序在运行,而不是没有响应. 2. 现在更新进度条的见过两种方法,一种是通过事件(信号,队列)的发送让主线程按照发送的顺序来更新进度条,一种是设置一个全局整形变量, 通过运行定时器的方式来更新进度条.第一种不适合在更新频率比较高的地方,比如一秒钟发送了20个事件,这样会造成主线程忙于处理事件界面出现假死状态. 所以最好的办法就是使用第2种通过定时器更新进度条,设置一

Linux下实现进度条并且彩色打印

Linux下实现进度条并彩色打印 一.为什么要实现一个进度条? 首先就是简单 ( ^_^ ) 其次就是理解以下几个知识点: 1. ' \r ' 与 '  \n ' 的区别 先来看下什么是缓冲区:暂时存放输入输出信息的地方 \r:将要输入输出的信息会覆盖缓冲区原有的信息 \n:先进行输入输出信息,再换行,最后刷新缓冲区 2. usleep函数 作用:把调用该函数的线程挂起一段时间,单位是微秒 头文件:#include <unistd.h> 语法:void usleep( int micro_se