回答編集履歴

2

追記

2019/07/12 01:03

投稿

YAmaGNZ
YAmaGNZ

スコア10242

test CHANGED
@@ -65,3 +65,51 @@
65
65
  ```
66
66
 
67
67
  一応、もとのソースが、タスク実行中でもキューだけは積むような形になっていたのでそのままにしていますが、キューに積むのも行わないのであれば、ボタンを押せないようにすればいいだけだと思います。
68
+
69
+
70
+
71
+
72
+
73
+ ### 追記
74
+
75
+ 質問の最後にあることですが
76
+
77
+ ```C#
78
+
79
+ Console.WriteLine("SleepStart");
80
+
81
+ System.Threading.Thread.Sleep(500);
82
+
83
+ button1.PerformClick();
84
+
85
+ System.Threading.Thread.Sleep(500);
86
+
87
+ Console.WriteLine("SleepEnd");
88
+
89
+
90
+
91
+ Console.WriteLine("SleepStart");
92
+
93
+ System.Threading.Thread.Sleep(500);
94
+
95
+ this.BeginInvoke((Action)(() => button1.PerformClick()));
96
+
97
+ System.Threading.Thread.Sleep(500);
98
+
99
+ Console.WriteLine("SleepEnd");
100
+
101
+
102
+
103
+ private void button1_Click(object sender, EventArgs e)
104
+
105
+ {
106
+
107
+ Console.WriteLine("Click!!!");
108
+
109
+ }
110
+
111
+
112
+
113
+ ```
114
+
115
+ こちらを試してみてください。

1

ソース修正

2019/07/12 01:03

投稿

YAmaGNZ
YAmaGNZ

スコア10242

test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  ```C#
6
+
7
+ private Task t2,t3;
6
8
 
7
9
  private void button12_Click()
8
10
 
@@ -20,17 +22,13 @@
20
22
 
21
23
 
22
24
 
23
- if (reentryflg2 == false)
25
+ if (t2 == null || t2.IsCompleted)
24
26
 
25
27
  {
26
28
 
27
- reentryflg2 = true;
28
-
29
- Task t2 = Task.Run(() => {
29
+ t2 = Task.Run(() => {
30
30
 
31
31
  //タイマー内で行っている処理
32
-
33
- reentryflg2 = false;
34
32
 
35
33
  });
36
34
 
@@ -50,17 +48,13 @@
50
48
 
51
49
 
52
50
 
53
- if (reentryflg3 == false)
51
+ if (t3 == null || t3.IsCompleted)
54
52
 
55
53
  {
56
54
 
57
- reentryflg3 = true;
58
-
59
- Task t3 = Task.Run(() => {
55
+ t3 = Task.Run(() => {
60
56
 
61
57
  //タイマー内で行っている処理
62
-
63
- reentryflg3 = false;
64
58
 
65
59
  });
66
60