質問するログイン新規登録

回答編集履歴

1

code

2016/03/01 12:31

投稿

Tak1wa
Tak1wa

スコア4791

answer CHANGED
@@ -1,4 +1,42 @@
1
1
  こんにちは。
2
2
 
3
3
  それはUIスレッドでメッセージボックス表示するようにしてやれば、
4
- バックグラウンドの処理は停止しないはずです。
4
+ バックグラウンドの処理は停止しないはずです。
5
+
6
+ ```C#
7
+ public partial class Form1 : Form
8
+ {
9
+ public Form1()
10
+ {
11
+ InitializeComponent();
12
+ }
13
+
14
+ private void button1_Click(object sender, EventArgs e)
15
+ {
16
+ backgroundWorker1.RunWorkerAsync();
17
+ }
18
+
19
+ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
20
+ {
21
+ //background process
22
+ System.Threading.Thread.Sleep(3000);
23
+ ShowMessageAsync("A");
24
+ System.Threading.Thread.Sleep(3000);
25
+ ShowMessageAsync("B");
26
+ System.Threading.Thread.Sleep(3000);
27
+ ShowMessageAsync("C");
28
+ }
29
+
30
+ private async void ShowMessageAsync(string message)
31
+ {
32
+ await Task.Run(() =>
33
+ {
34
+ Invoke((MethodInvoker)delegate
35
+ {
36
+ //UI Thread
37
+ MessageBox.Show(message);
38
+ });
39
+ });
40
+ }
41
+ }
42
+ ```