ホームページ >バックエンド開発 >C++ >「コレクションが変更されましたが、列挙操作はWCFのエラーを実行しない場合がありますか?

「コレクションが変更されましたが、列挙操作はWCFのエラーを実行しない場合がありますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-02 03:56:08978ブラウズ

How to Fix the

トラブルシューティング「コレクションが変更されました。列挙操作はWCFでエラーを実行しない場合があります

イライラする「コレクションが変更されました。列挙操作が実行されない場合があります」エラーは、デバッグするとしばしば消え、診断が困難になります。この記事では、特定のWCFサーバーシナリオを検討し、ソリューションを提供しています。

この問題は、辞書を使用してデータイベントサブスクライバーを追跡するために辞書を使用してWindowsサービスで発生します。 クライアントのIDを削除する(unsubscription)により、

メソッドがこのエラーをスローすることがあります。 NotifySubscribers可能性の高い犯人は、

などのコールバックであり、

ループ中にサブスクライバー辞書を変更します。 これを解決するには、SignalDataループを変更することを検討してください:NotifySubscribers foreach元のコード:

修正コード:
<code class="language-csharp">foreach(Subscriber s in subscribers.Values)</code>

<code class="language-csharp">foreach(Subscriber s in subscribers.Values.ToList())</code>
を使用して

のコピーを作成することにより、列挙はループの開始時に辞書の状態のスナップショットで動作します。 元の辞書のその後の変更は列挙に影響しないため、subscribers.Valuesコールバックが問題の原因である場合、エラーが排除されます。 これにより、ループが外部の変更から分離され、スムーズな実行が確保されます。

以上が「コレクションが変更されましたが、列挙操作はWCFのエラーを実行しない場合がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。