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

質問編集履歴

3

質問文を元に戻しました。

2022/05/23 09:48

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- C#form マルチタスク処理でcheckListBoxに値入れる方法
1
+ C#form マルチタスク処理でタスク数制限してかつメインウインドウをフリーズさせない方法が知りたい。
body CHANGED
@@ -1,12 +1,7 @@
1
- 提示コードの `/* # リストに設定 非同期 #*/`部のードの成功部コメント部ですがこれ非同期デリゲート関に入れると実行時エラー発生るのですがこれはどうやって回避するのでしょか?そもそもできないのでしょうか?読み込みながらリスを更新したいのですが?
1
+ 提示コードの`///`コメント部ですが処理をの数を制限するとウインドウフリーズしてしまいまこれ回避するにはどしたらのでしょうか?参考サイトのやり方はフリーズしてしまいま
2
+ ##### 知りたいこと
3
+ 10個タスクを生成してそれが全部終わったらまた10個生成して実行という処理を作りたのですがこれをするにはどうやって終了を検知したらいいのでしょうか
2
4
 
3
- ```
4
- System.InvalidOperationException:
5
- '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'checkedListBox_list' がアクセスされました。'
6
-
7
- ```
8
-
9
-
10
5
  参考サイト:https://www.ipentec.com/document/csharp-wait-task-complete-multiple#:~:text=WaitAll()%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E5%88%A9%E7%94%A8,%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%BA%E5%87%A6%E7%90%86%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
11
6
 
12
7
  参考サイト:

2

文章を修正

2022/05/23 09:45

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- C# マルチタスク処理で同時実行できるタスクの数制限してかつウインドウをフリーズさせない方法が知りたい。
1
+ C#form マルチタスク処理でcheckListBox入れる方法
body CHANGED
@@ -1,10 +1,12 @@
1
- 提示コードのコメント部内部の関数なのですが`setDataList_Async(item);`関数が120個とかをマルチタスクされると動作が重くなるので
2
- それを同時10に制限して終わったらまた10個といった具合に処理を小刻みに停止してかつウインウ操作を可能にしたのですがこれをするはどう検知するればのでしょうか?参考サイトはウインドウ操作ーズてしま
1
+ 提示コードの `/* # リスト設定 非同期 #*/`部コードの成功部コメント部ですがこれを非同期のデリゲート関数に入れると実行時エラーが発生するのですがこれはどうやって回避するのでしょうか?そもそもできないのでしょうか?読み込みなストを更新のでが?
3
2
 
4
- ##### 知りたいこと
3
+ ```
5
- タスクが全部終わったかどうかを検知してそれでいてウインドウ操作を可能にするマルチタスクの実装方法
4
+ System.InvalidOperationException:
5
+ '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'checkedListBox_list' がアクセスされました。'
6
6
 
7
+ ```
7
8
 
9
+
8
10
  参考サイト:https://www.ipentec.com/document/csharp-wait-task-complete-multiple#:~:text=WaitAll()%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E5%88%A9%E7%94%A8,%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%BA%E5%87%A6%E7%90%86%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
9
11
 
10
12
  参考サイト:
@@ -45,7 +47,7 @@
45
47
  }
46
48
 
47
49
 
48
- /* ########################### リストに設定 非同期 ###########################*/
50
+ /* ########################### リストに設定 非同期 ###########################*/
49
51
  public async void setDataList_Async(string u)
50
52
  {
51
53
  Func<Data?> job = () =>
@@ -67,13 +69,26 @@
67
69
 
68
70
  };
69
71
 
70
- Data b = await Task.Run(job); //非同期メソッドを実行
72
+ taskData.Add(Task.Run(job)); //非同期メソッドを実行
71
73
 
74
+ if(taskData.Count > total)
75
+ {
76
+ Task.WaitAll(taskData.ToArray());
77
+ total += 10;
78
+ }
79
+
80
+ /*
72
81
  //成功時 リストに代入
73
82
  if (b != null)
74
83
  {
84
+ Debug.WriteLine(b.getTitle());
75
85
  checkedListBox_list.Items.Add(b.getTitle());
76
86
  }
87
+ else
88
+ {
89
+ Debug.WriteLine("null");
90
+ }
91
+ */
77
92
  }
78
93
 
79
94
  ```

1

文章を修正

2022/05/23 09:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,10 @@
1
1
  提示コードのコメント部内部の関数なのですが`setDataList_Async(item);`関数が120個とかをマルチタスクされると動作が重くなるので
2
2
  それを同時に10に制限して終わったらまた10個といった具合に処理を小刻みにの停止してかつウインドウ操作を可能にしたのですがこれをするにはどう検知するればいいのでしょうか?参考サイトはウインドウ操作がフリーズしてしまいます。
3
3
 
4
+ ##### 知りたいこと
5
+ タスクが全部終わったかどうかを検知してそれでいてウインドウ操作を可能にするマルチタスクの実装方法
6
+
7
+
4
8
  参考サイト:https://www.ipentec.com/document/csharp-wait-task-complete-multiple#:~:text=WaitAll()%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E5%88%A9%E7%94%A8,%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%BA%E5%87%A6%E7%90%86%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
5
9
 
6
10
  参考サイト: