[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part138 http://mevius.5ch.net/test/read.cgi/tech/1528194762/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
781: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/21(土) 21:15:58.91 ID:BEEMYUE30 >>779 です WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました Invoke はそれなりに慎重に使わないといけないみたいです void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("このメッセージは必ず表示される"); Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { })); MessageBox.Show("デッドロックするとこのメッセージは表示されない"); } ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした Enumerable.Repeat(0, 0) に変える → デッドロックしない Enumerable.Repeat(0, 1) に変える → デッドロックする new int[] { } に変える → デッドロックしない new int[] { 0 } に変える → デッドロックしない new int[] { 0, 0 } に変える → デッドロックする http://mevius.5ch.net/test/read.cgi/tech/1528194762/781
786: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/21(土) 21:33:11.65 ID:BEEMYUE30 >>783-784 レスありがとうございます > いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。 >>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね > WPFかあ >>769 でデータグリッドと書かれていたので、 今の Windows フォームなら DataGrid ではなく DataGridView かなと思って WPF の方で試してしまいました(汗 Windows フォームだと挙動が変わるならそれも知っておきたいので 今からそっちでも試してみます http://mevius.5ch.net/test/read.cgi/tech/1528194762/786
787: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/21(土) 21:36:50.95 ID:BEEMYUE30 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(() => { }))); MessageBox.Show("デッドロックするとこのメッセージは表示されない"); } http://mevius.5ch.net/test/read.cgi/tech/1528194762/787
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s