Visual Studio で開発していると、
「破棄されたオブジェクトにアクセスできません」
という見慣れないエラーが突然出てしまいました。
私の場合はエラーの詳細にDkmDataController と表示され、「自分のコードが壊れた?」「何を直せばいいの?」と原因がわからない状態でした。
ですが調べてみたところ、この現象は アプリ側の問題ではなく、Visual Studio の内部デバッガーが一時的に不調になっただけ で起こるもののようです。
私の環境ではファイルを保存したタイミングで急にこの例外が発生しましたが、結果的にはVisual Studioを再起動しただけであっさり解決しました。
この記事では、実際に遭遇した状況と、どう対処したのかをわかりやすく紹介していきます。
同じエラーに悩んでいる方の参考になれば幸いです。
発生したエラー内容
今回発生したのは、Visual Studio上でのデバッグ中にファイルを保存した瞬間でした。
突然、Visual Studio が以下のような例外ダイアログを表示しました。
破棄されたオブジェクトにアクセスできません。
ObjectDisposedException: DkmDataController調べてみると、原因として表示されている DkmDataController はシステムのクラスではなく、Visual Studio 内部のデバッガー機能 の一部であることに気づきました。
つまり、システムではなく Visual Studio 自体が内部処理でつまずいているだけ
という状態です。
この時点で「アプリのコードを修正しても解決しないタイプのエラー」だと判断できました。
DkmDataControllerとは?
エラー文に登場した DkmDataController は、
Visual Studio の内部で動いている デバッガー機能を管理するコンポーネント の一つです。
ファイルを保存すると、Visual Studio は裏側で次のような処理を行います。
- デバッグ情報の再読み込み
- プロジェクト状態のチェック
- エディタやデバッガーの内部更新
このタイミングで、Visual Studio の内部オブジェクトが一時的に解放されたり、
処理の順番が前後したりすると、まれに “破棄済みオブジェクトを参照した” という状態が発生します。
つまり、このエラーは—
アプリのコードが原因ではない
Visual Studio の内部デバッガーが一時的に不調になっているだけ
という、ごく軽微な Visual Studio 側の問題です。
そのため、アプリ側を修正しても解消しませんし、
難しく考える必要もありません。
内部処理が乱れた一時的なエラーとして捉えてOKです。
まとめ
今回は、Visual Studio を使っている際に発生する
「破棄されたオブジェクトにアクセスできません(ObjectDisposedException)」
というエラーについて紹介しました。
ポイントを整理すると以下の通りです。
- エラーに登場する DkmDataController は、Visual Studio 内部のデバッガー機能の一部
- 発生するタイミングは主に ファイル保存やデバッグ中の操作
- アプリ側のコードが原因ではないので、慌てる必要はない
- 解決策は Visual Studio を再起動するだけで解決する場合がある
同じ現象に遭遇したときは、まず再起動を試すだけで問題が解消する可能性があるので、一度試してみてください。
コメント