問題タブ [contextswitchdeadlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
707 参照

c# - ComboBox を開くのに時間がかかりすぎる (COMException エラー)

これが私の問題の状況です: type の 2 つのアイテム
を持っています。コレクションを持っています。 同じウィンドウの別の場所に、ItemsSource として選択された列があります。ListBoxMyClass
MyClassList<Column>
ComboBoxMyClass.ColumnCollection

ここから問題が始まります:
ComboBox のポップアップを初めて開くと、すべてうまくいきます。
ListBox で他の項目を選択すると (および ComboBox ソースも変更すると)、ポップアップを開くのに 10 秒以上かかります。60 秒以上かかる場合は、次のエラーが表示されます。

私はエラーをグーグルで検索しましたが、どこに行っても ContextSwitchDeadlocks のスローを無効にするようにというアドバイスがありましたが、これはまったく解決策ではありません!

これをさらに調べたところ、次の COMException が見つかりました。

スレッド/タスクなどは使用せず、ComboBox.
別のアイテムの選択時に ItemsSource を更新しようとしましたが、既に正しく設定されているため、違いはありませんでした。

このエラーについてグーグルで検索しようとしましたが、この問題の解決策はないようです。
Microsoft はこれに対する修正プログラムを提供しましたが、ダウンロードはありません。

リストボックスのコード:

ComboBox のコード:

SelectionChanged イベント:

質問:
COMException を防ぐ方法を知っている人はいますか?

更新 1:
いくつかの Xaml コード サンプルを追加しました

更新 2:
質問を簡略化

更新 3:
本当のエラーは COM 例外であることがわかりました。
新しい情報で私の質問を更新しました。

更新 4:
ListBox 内のすべてのオブジェクトが完了し、メモリ内に存在するため、クエリは実行されません。さらに、comboBox が 1 つまたは 100 個の項目で満たされている場合でも、待機時間は常に発生します。(私は両方をテストしました)。

0 投票する
1 に答える
447 参照

contextswitchdeadlock - セマフォによるデッドロック回避?

デッドロックを防ぐには?これを行うことができるアルゴリズムはありますか?2 つのプロセスがあります。1 つはセマフォを保持し、もう 1 つはセマフォを待機します。セマフォを保持しているプロセスが停止すると、デッドロックが発生します。私の質問は、そのような状況を回避するために(セマフォまたはオペレーティングシステムで)とにかくありますか?ありがとう!