1
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
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace HP
{
public partial class Form3 : Form
{
private BackgroundWorkerManage _bg = new BackgroundWorkerManage();
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// バックグラウンド処理を開始
_bg.Run(DoWork, Completed);
}
private void button2_Click(object sender, EventArgs e)
{
_bg.Run(DoWork, null);
}
private void button3_Click(object sender, EventArgs e)
{
string str = "ArgumentTest";
_bg.Run(DoWork, null, str);
}
private void button4_Click(object sender, EventArgs e)
{
// バックグラウンド処理をキャンセルします。
_bg.Cancel();
}
private void DoWork(object sender, DoWorkEventArgs e)
{
if (e.Argument != null)
{
Console.WriteLine(" 引数は[" + e.Argument + "]です。");
}
Console.WriteLine(" Dowork 1");
Thread.Sleep(3000);
Console.WriteLine(" Dowork 2");
if (_bg.IsCancel)
{
e.Cancel = true;
return;
}
Thread.Sleep(1000);
Console.WriteLine(" Dowork 3");
}
private void Completed(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
MessageBox.Show("途中でキャンセルしました。");
}
}
}
}
|