質問編集履歴

3

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

2022/05/23 09:48

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- C#form マルチタスク処理でcheckListBoxに値入れる方法
1
+ C#form マルチタスク処理でタスク数制限してかつメインウインドウをフリーズさせない方法が知りたい。
test CHANGED
@@ -1,11 +1,6 @@
1
- 提示コードの `/* # リストに設定 非同期 #*/`部のードの成功部コメント部ですがこれ非同期デリゲート関に入れると実行時エラが発生るのですがこれはどうやって回避するのでしょうか?そもそもできないのでしょうか?読み込みながらストを更新のでが?
1
+ 提示コードの`///`コメント部ですが処理をの数を制限するとウインドウがフリズしてしまいまこれ回避するにはどうしたらいいのでしょうか?参考サイトやり方はフーズてしま
2
-
3
- ```
4
- System.InvalidOperationException:
2
+ ##### 知りたいこと
5
- '有効ではないレッド間の操作: コントロールが作れたスレッド以外スレッドからコントロール 'checkedListBox_list' アクセスさした。'
3
+ 10個タクを生してそが全部終わっらまた10個生成して実行という処理を作りたですをするにはどうやって終了を検知したらいいのでしょうか
6
-
7
- ```
8
-
9
4
 
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
 

2

文章を修正

2022/05/23 09:45

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- C# マルチタスク処理で同時実行できタスクの数を制限してかつウインドウをフリーズさせない方法が知りたい。
1
+ C#form マルチタスク処理でcheckListBox値を入れる方法
test CHANGED
@@ -1,8 +1,10 @@
1
- 提示コードのコメント部内部の関数なのですが`setDataList_Async(item);`関数が120個とかをマルチタスクされると動作が重くなるので
2
- それを時に10に制限して終わったらまた10個といった具合に処理を小刻みに停止してかつウインウ操作を可能にしたのですがこれをするはどう検知するればのでしょうか?参考サイトはウインドウ操作ーズてしま
1
+ 提示コードの `/* # リストに設定 非期 #*/`部コードの成功部コメント部ですがこれを非同期のデリゲート関数に入れると実行時エラーが発生するのですがこれはどうやって回避するのでしょうか?そもそもできないのでしょうか?読み込みなストを更新のでが?
3
2
 
4
- ##### 知りたいこと
3
+ ```
5
- タスクが全部終わったかどうかを検知してそれでいてウインドウ操作を可能にするマルチタスクの実装方法
4
+ System.InvalidOperationException:
5
+ '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'checkedListBox_list' がアクセスされました。'
6
+
7
+ ```
6
8
 
7
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
@@ -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

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,9 @@
1
1
  提示コードのコメント部内部の関数なのですが`setDataList_Async(item);`関数が120個とかをマルチタスクされると動作が重くなるので
2
2
  それを同時に10に制限して終わったらまた10個といった具合に処理を小刻みにの停止してかつウインドウ操作を可能にしたのですがこれをするにはどう検知するればいいのでしょうか?参考サイトはウインドウ操作がフリーズしてしまいます。
3
+
4
+ ##### 知りたいこと
5
+ タスクが全部終わったかどうかを検知してそれでいてウインドウ操作を可能にするマルチタスクの実装方法
6
+
3
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