`
mlzboy
  • 浏览: 724930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自写的BackgroundWorker的学习例子

阅读更多

 

按照惯例先上个图,自己照着人家的例子写了一遍,基本上把这个弄懂了,这个控件就是省事,不懂线程原理的人也可使,ms就是厉害,生产力节节提高哈,

 

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Linq;
 7using System.Text;
 8using System.Threading;
 9using System.Windows.Forms;
10
11namespace BrowserDemo
12{
13    public partial class Form7 : Form
14    {
15        const int argument = 20000;
16
17        public Form7()
18        {
19            InitializeComponent();
20        }

21
22        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
23        {
24            for(var i=0;i<int.Parse(e.Argument.ToString());i++)
25            {
26                e.Result = i;
27                (sender as BackgroundWorker).ReportProgress((int)(((double)i / (double)((int)e.Argument)) * 100),i);
28                Thread.Sleep(20);
29                if (this.backgroundWorker1.CancellationPending)
30                    return;
31            }

32        }

33
34        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
35        {
36            this.listBox1.Items.Add(e.UserState);
37            this.progressBar1.Value = e.ProgressPercentage;
38        }

39
40        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
41        {
42            MessageBox.Show("finished");
43        }

44
45        private void button1_Click(object sender, EventArgs e)
46        {
47            if (this.backgroundWorker1.IsBusy)
48            {
49                MessageBox.Show("慢则那,等着吧");
50                return;
51            }

52            this.backgroundWorker1.RunWorkerAsync(argument);
53            this.button2.Enabled = true;
54            this.button3.Enabled = true;
55
56        }

57
58        private void button2_Click(object sender, EventArgs e)
59        {
60            MessageBox.Show("111");
61        }

62
63        private void button3_Click(object sender, EventArgs e)
64        {
65            this.backgroundWorker1.CancelAsync();
66        }

67
68        private void Form7_Load(object sender, EventArgs e)
69        {
70            this.button2.Enabled = false;
71            this.button3.Enabled = false;
72        }

73    }

74}

75

 

完整的工程如下

 

 http://files.cnblogs.com/lexus/BrowserDemo.7z

 

相关资源,发现msdn上写得比较还好,不过自己写一遍自己就清楚了,我发现网上的msdn,是不是和vs2008里的光盘里的那个msdn不一样,有些资源为什么在光盘上的找不到呢,等我采集程序做好了,我要把它都抓下来,占为已有,嘿嘿

 http://msdn.microsoft.com/zh-cn/library/ms233672(VS.80).aspx

分享到:
评论

相关推荐

    VB.net BackgroundWorker使用例子很经典

    在VB.NET编程中,`BackgroundWorker`组件是一个非常重要的工具,它允许我们在应用程序的主线程之外执行耗时操作,...通过实践和学习提供的"VB.net BackgroundWorker使用例子",开发者可以更好地理解和掌握这一功能。

    BackgroundWorker组件的正确使用例子,带注释

    本例子将深入讲解如何正确使用BackgroundWorker组件,包括其主要属性、方法和事件。 首先,BackgroundWorker组件有以下几个关键属性: 1. **IsBusy**:这个布尔属性用于检查BackgroundWorker是否正在执行工作。当...

    BackgroundWorker Demo

    在.NET框架中,`BackgroundWorker`组件是一个非常重要的工具,尤其在开发多线程应用程序时。这个组件使得在用户界面...通过深入学习和实践`BackgroundWorker`,开发者可以构建更加高效、用户体验更好的桌面应用程序。

    C# BackgroundWorker组件学习入门介绍

    【C# BackgroundWorker组件学习入门】 在C#编程中,有时我们需要执行一些耗时的任务,比如大数据处理、网络通信或者文件操作等。这些任务如果在主线程上执行,会导致用户界面(UI)变得无响应,影响用户体验。为了解决...

    BackgroundWorker.rar

    通过这个例子,我们可以学习到如何在.NET环境中有效地使用BackgroundWorker组件来创建响应式的用户界面,同时处理复杂的后台任务。了解和掌握BackgroundWorker,对于任何.NET开发者来说都是一个重要的技能,特别是在...

    101个C#例子[示例源码]

    "101个C#例子[示例源码]"集合了学习C#时可能会遇到的各种关键概念和技术,旨在帮助初学者快速理解和掌握C#编程。 1. **数据库操作**:C#可以与各种数据库进行交互,如SQL Server、MySQL、Oracle等。通过ADO.NET框架...

    进度条例子(C#源代码编写)

    这个压缩包文件“C#081212-进度条例子”很可能是包含了一个C#项目,其中详细展示了如何在Windows Forms或WPF应用中实现进度条功能的源代码示例。 在Windows Forms应用程序中,我们通常使用`ProgressBar`控件来创建...

    C#WinForm150例子

    7. **多线程**:学习如何在WinForm中使用Thread或者BackgroundWorker组件,以实现后台处理,提高程序响应性。 8. **文件操作**:读写文件是常见的需求,例子中会有如何使用File和StreamReader/StreamWriter类进行...

    C#自动更新 【CSDN 10个例子】 winfrom

    9. **源码示例**:压缩包中的文件如`C# winform 自动升级.rar`和`C#实现软件自动升级实例源码.rar`提供了具体的实现代码,可以从这些例子中学习如何将上述概念应用到实际项目中。 10. **安全考虑**:在设计自动更新...

    带进度条的状态栏使用小例子

    总的来说,通过这样的小例子,开发者可以学习到如何在C#的Windows Forms应用程序中创建一个带有进度条的状态栏,提升用户界面的交互性和用户体验。同时,这也是一种良好的实践,展示了如何利用BackgroundWorker组件...

    VB.NET101个例子

    9. **多线程**:VB.NET支持多线程编程,例子可能包括如何启动新线程,使用Thread和BackgroundWorker类,以及同步和互斥的概念。 10. **文件和流操作**:VB.NET提供了读写文件和处理流的能力,例子可能涵盖使用...

    vb.net多线程例子

    总的来说,VB.NET的多线程功能强大且易于使用,对于初学者来说,通过简单的例子学习多线程是一个很好的起点。不过,随着项目复杂性的增加,理解并掌握线程管理、同步和通信机制至关重要,这将有助于编写出更加健壮和...

    winform_c#_多线程例子

    这个"winform_c#_多线程例子"项目提供了一个实用的起点,帮助开发者学习和理解如何在Winform应用程序中有效地使用多线程,提高程序性能和用户体验。通过研究这个例子,可以深入理解线程管理、UI交互、异常处理和线程...

    C#做的winform多线程例子

    在C#编程中,Windows Forms(WinForms)应用程序经常需要处理复杂的任务,...这个示例项目`ThreadTest`为我们提供了实践这些概念的机会,通过打开和分析项目中的代码文件,我们可以深入学习多线程在实际项目中的应用。

    VB.NET编程例子大全

    这个“VB.NET编程例子大全”压缩包可能包含了各种VB.NET编程的实例,帮助学习者理解并掌握VB.NET的基本概念、语法以及高级特性。 在VB.NET中,你可以学习到以下核心知识点: 1. **基本语法**:包括变量声明、数据...

    VB.NET中最常用的101个例子

    通过深入学习并实践这101个VB.NET例子,开发者不仅可以巩固理论知识,还能提升实际问题解决能力,为构建复杂应用打下坚实基础。每一个例子都是一个宝贵的实践经验,有助于程序员逐步成长为VB.NET的专家。

    C#(3.5)文件管理器(C#范例书中的例子)

    如果涉及到多线程操作,比如在后台执行文件操作以避免阻塞用户界面,可能会用到BackgroundWorker组件或者Task并行库。 在实际开发过程中,为了确保良好的用户体验,开发者可能还考虑了错误处理和异常捕获,使用try-...

    silverlight 数据压缩例子

    在IT行业中,Silverlight是一种基于.NET Framework的浏览器插件,由微软开发,主要用于创建富互联网应用程序(RIA)...通过学习这个例子,开发者能够更好地理解和应用数据压缩技术,提升其Silverlight应用的用户体验。

    winform多线程

    总结来说,学习WinForm多线程不仅涉及线程的创建和管理,还包括线程同步、UI更新规则以及在特定场景下(如处理Excel文件)的注意事项。通过实践这些概念,开发者可以编写出更高效、更响应的桌面应用程序。

Global site tag (gtag.js) - Google Analytics