回答編集履歴
2
追記
answer
CHANGED
@@ -31,4 +31,28 @@
|
|
31
31
|
}
|
32
32
|
}
|
33
33
|
```
|
34
|
-
一応、もとのソースが、タスク実行中でもキューだけは積むような形になっていたのでそのままにしていますが、キューに積むのも行わないのであれば、ボタンを押せないようにすればいいだけだと思います。
|
34
|
+
一応、もとのソースが、タスク実行中でもキューだけは積むような形になっていたのでそのままにしていますが、キューに積むのも行わないのであれば、ボタンを押せないようにすればいいだけだと思います。
|
35
|
+
|
36
|
+
|
37
|
+
### 追記
|
38
|
+
質問の最後にあることですが
|
39
|
+
```C#
|
40
|
+
Console.WriteLine("SleepStart");
|
41
|
+
System.Threading.Thread.Sleep(500);
|
42
|
+
button1.PerformClick();
|
43
|
+
System.Threading.Thread.Sleep(500);
|
44
|
+
Console.WriteLine("SleepEnd");
|
45
|
+
|
46
|
+
Console.WriteLine("SleepStart");
|
47
|
+
System.Threading.Thread.Sleep(500);
|
48
|
+
this.BeginInvoke((Action)(() => button1.PerformClick()));
|
49
|
+
System.Threading.Thread.Sleep(500);
|
50
|
+
Console.WriteLine("SleepEnd");
|
51
|
+
|
52
|
+
private void button1_Click(object sender, EventArgs e)
|
53
|
+
{
|
54
|
+
Console.WriteLine("Click!!!");
|
55
|
+
}
|
56
|
+
|
57
|
+
```
|
58
|
+
こちらを試してみてください。
|
1
ソース修正
answer
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
処理実行中にもう一度行わないのなら、button12_Click内にて下記みたいな感じで判断して実行しないのはダメなんですか?
|
2
2
|
|
3
3
|
```C#
|
4
|
+
private Task t2,t3;
|
4
5
|
private void button12_Click()
|
5
6
|
{
|
6
7
|
string[] txt2 = { "ほげほげ", "にゃーにゃー" }; //どこかから複数データ拾ってくる
|
@@ -9,12 +10,10 @@
|
|
9
10
|
q2.Enqueue(s); //キューに入れる
|
10
11
|
}
|
11
12
|
|
12
|
-
if (
|
13
|
+
if (t2 == null || t2.IsCompleted)
|
13
14
|
{
|
14
|
-
reentryflg2 = true;
|
15
|
-
|
15
|
+
t2 = Task.Run(() => {
|
16
16
|
//タイマー内で行っている処理
|
17
|
-
reentryflg2 = false;
|
18
17
|
});
|
19
18
|
}
|
20
19
|
|
@@ -24,12 +23,10 @@
|
|
24
23
|
q3.Enqueue(s);
|
25
24
|
}
|
26
25
|
|
27
|
-
if (
|
26
|
+
if (t3 == null || t3.IsCompleted)
|
28
27
|
{
|
29
|
-
reentryflg3 = true;
|
30
|
-
|
28
|
+
t3 = Task.Run(() => {
|
31
29
|
//タイマー内で行っている処理
|
32
|
-
reentryflg3 = false;
|
33
30
|
});
|
34
31
|
}
|
35
32
|
}
|