按照惯例先上个图,自己照着人家的例子写了一遍,基本上把这个弄懂了,这个控件就是省事,不懂线程原理的人也可使,ms就是厉害,生产力节节提高哈,
1
using
System;
2
using
System.Collections.Generic;
3
using
System.ComponentModel;
4
using
System.Data;
5
using
System.Drawing;
6
using
System.Linq;
7
using
System.Text;
8
using
System.Threading;
9
using
System.Windows.Forms;
10
11
namespace
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

完整的工程如下
https://files.cnblogs.com/lexus/BrowserDemo.7z
相关资源,发现msdn上写得比较还好,不过自己写一遍自己就清楚了,我发现网上的msdn,是不是和vs2008里的光盘里的那个msdn不一样,有些资源为什么在光盘上的找不到呢,等我采集程序做好了,我要把它都抓下来,占为已有,嘿嘿
http://msdn.microsoft.com/zh-cn/library/ms233672(VS.80).aspx
本文参考链接:https://www.cnblogs.com/lexus/archive/2008/08/27/1277956.html