回答編集履歴

1

code

2016/03/01 12:31

投稿

Tak1wa
Tak1wa

スコア4791

test CHANGED
@@ -5,3 +5,79 @@
5
5
  それはUIスレッドでメッセージボックス表示するようにしてやれば、
6
6
 
7
7
  バックグラウンドの処理は停止しないはずです。
8
+
9
+
10
+
11
+ ```C#
12
+
13
+ public partial class Form1 : Form
14
+
15
+ {
16
+
17
+ public Form1()
18
+
19
+ {
20
+
21
+ InitializeComponent();
22
+
23
+ }
24
+
25
+
26
+
27
+ private void button1_Click(object sender, EventArgs e)
28
+
29
+ {
30
+
31
+ backgroundWorker1.RunWorkerAsync();
32
+
33
+ }
34
+
35
+
36
+
37
+ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
38
+
39
+ {
40
+
41
+ //background process
42
+
43
+ System.Threading.Thread.Sleep(3000);
44
+
45
+ ShowMessageAsync("A");
46
+
47
+ System.Threading.Thread.Sleep(3000);
48
+
49
+ ShowMessageAsync("B");
50
+
51
+ System.Threading.Thread.Sleep(3000);
52
+
53
+ ShowMessageAsync("C");
54
+
55
+ }
56
+
57
+
58
+
59
+ private async void ShowMessageAsync(string message)
60
+
61
+ {
62
+
63
+ await Task.Run(() =>
64
+
65
+ {
66
+
67
+ Invoke((MethodInvoker)delegate
68
+
69
+ {
70
+
71
+ //UI Thread
72
+
73
+ MessageBox.Show(message);
74
+
75
+ });
76
+
77
+ });
78
+
79
+ }
80
+
81
+ }
82
+
83
+ ```