[過去ログ] ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
773(3): (ワッチョイ 9f5d-haGl) 2018/07/21(土)20:10 ID:BEEMYUE30(1/9) AAS
>>771
Action<TLocal> localFinally の引数をとるオーバーロードを使ってみたらどうでしょう?
779(5): (ワッチョイ 9f5d-haGl) 2018/07/21(土)20:35 ID:BEEMYUE30(2/9) AAS
私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください
UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
781(2): (ワッチョイ 9f5d-haGl) 2018/07/21(土)21:15 ID:BEEMYUE30(3/9) AAS
>>779 です
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです
void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
省8
786: (ワッチョイ 9f5d-haGl) 2018/07/21(土)21:33 ID:BEEMYUE30(4/9) AAS
>>783-784
レスありがとうございます
> いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
>>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね
> WPFかあ
>>769 でデータグリッドと書かれていたので、
今の Windows フォームなら DataGrid ではなく DataGridView かなと思って
省3
787(1): (ワッチョイ 9f5d-haGl) 2018/07/21(土)21:36 ID:BEEMYUE30(5/9) AAS
Windows フォームで試してみたのでご報告を。
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
省2
789(1): (ワッチョイ 9f5d-haGl) 2018/07/21(土)22:44 ID:BEEMYUE30(6/9) AAS
>>788
あくまで私一人の考えですが・・・
[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
Parallel.ForEach から切り出してもほとんど同じなのでは?
省8
792(1): (ワッチョイ 9f5d-haGl) 2018/07/21(土)23:10 ID:BEEMYUE30(7/9) AAS
>>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです
>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます
> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
省6
794(1): (ワッチョイ 9f5d-haGl) 2018/07/21(土)23:30 ID:BEEMYUE30(8/9) AAS
>>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
省1
797(1): (ワッチョイ 9f5d-haGl) 2018/07/21(土)23:55 ID:BEEMYUE30(9/9) AAS
>>795
レスありがとうございます
おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので
次から次へとキューが入って大変なことになりそう・・・と思ったのですが、
そんなに心配することではないのでしょうか
>>796
それで一応動くと思いますが、Parallel.ForEach が終わる前に
省3
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s