問題タブ [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.
c# - ComboBox を開くのに時間がかかりすぎる (COMException エラー)
これが私の問題の状況です: type の 2 つのアイテム
を持っています。コレクションを持っています。
同じウィンドウの別の場所に、ItemsSource として選択された列があります。ListBox
MyClass
MyClass
List<Column>
ComboBox
MyClass.ColumnCollection
ここから問題が始まります:
ComboBox のポップアップを初めて開くと、すべてうまくいきます。
ListBox で他の項目を選択すると (および ComboBox ソースも変更すると)、ポップアップを開くのに 10 秒以上かかります。60 秒以上かかる場合は、次のエラーが表示されます。
私はエラーをグーグルで検索しましたが、どこに行っても ContextSwitchDeadlocks のスローを無効にするようにというアドバイスがありましたが、これはまったく解決策ではありません!
これをさらに調べたところ、次の COMException が見つかりました。
スレッド/タスクなどは使用せず、ComboBox
.
別のアイテムの選択時に ItemsSource を更新しようとしましたが、既に正しく設定されているため、違いはありませんでした。
このエラーについてグーグルで検索しようとしましたが、この問題の解決策はないようです。
Microsoft はこれに対する修正プログラムを提供しましたが、ダウンロードはありません。
リストボックスのコード:
ComboBox のコード:
SelectionChanged イベント:
質問:
COMException を防ぐ方法を知っている人はいますか?
更新 1:
いくつかの Xaml コード サンプルを追加しました
更新 2:
質問を簡略化
更新 3:
本当のエラーは COM 例外であることがわかりました。
新しい情報で私の質問を更新しました。
更新 4:
ListBox 内のすべてのオブジェクトが完了し、メモリ内に存在するため、クエリは実行されません。さらに、comboBox が 1 つまたは 100 個の項目で満たされている場合でも、待機時間は常に発生します。(私は両方をテストしました)。
contextswitchdeadlock - セマフォによるデッドロック回避?
デッドロックを防ぐには?これを行うことができるアルゴリズムはありますか?2 つのプロセスがあります。1 つはセマフォを保持し、もう 1 つはセマフォを待機します。セマフォを保持しているプロセスが停止すると、デッドロックが発生します。私の質問は、そのような状況を回避するために(セマフォまたはオペレーティングシステムで)とにかくありますか?ありがとう!