問題タブ [objectdisposedexception]
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# - 「ObjectContext が破棄されました」/マルチコントローラー ビュー
-
この Html.Action が呼び出されると、The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
.Include()
これは通常、コード内の適切な場所で使用して修正できるエラーです。
しかし、この場合:
- デバッグ時に、「もの」または含まれているサブエンティティが破棄されたようには見えません。
- ブレークポイントを設定することはできます
@Html.Action("someAction", "someOtherController", thing)
が、メソッドの最初の行にブレークポイントを設定すると、someAction(...)
到達することはありません。 - このような部分ビューを使用する別のページがあり、完全に機能します
@Html.Action("someAction", "someOtherController", thing)
部分ビューから呼び出すのではなく、代わりにコンテンツを生成すると、完全に機能します。-
したがって、その呼び出しとコントローラーの間に何か問題があるに違いありませんが、何を指摘することはできません。これをさらにデバッグしたり、問題を解決したりする方法はありますか?
誰かがクエリを求めました:
データ アクセス層:
コントローラーで:
c# - クライアント要求によってサーバーを閉じると、予期しない再帰で終了し、ObjectDisposedException が発生する
私はソケットを試していて、かなり単純な TCP サーバーを構築しました。
ここで利用可能なコード: http://pastebin.com/zLRaBc0q
クライアントからのソケット サーバーの停止に問題があります。136
ペーストビンの to の行から始まるの192
は、サーバー終了のハンドラです。
背後にあるロジックは非常に単純です。
- 要求しているクライアントを切断します。
- 接続されたクライアントのリストからクライアントを削除します。
- 残りのクライアントを切断して削除します。
- サーバーを閉じます。
- リストからサーバーを削除します。
プログラムは上記を完全に実行しますが、何とか最後に 1 つの余分なステップを押し込むことができReceiveCallback
ます。ObjectDisposedException
100
明らかに、シャットダウンプロセスでアクセスできませんでしたclient
。ReceiveCallback
ここでの問題は、プログラムが再び入る理由がわからないことです。終了メッセージを処理した後、別の呼び出しを開始せずに void を返します。
言及する価値があるのは、2 つのクライアントが接続されている場合にのみ発生することです。1つのクライアントで問題なく停止します。
しかし、それは(私にとって)それが でrequesting client
終わるのでObjectDisposedException
はなく、他のものであることを示しています。とにかく、なぜReceiveCallback
再び呼び出されるのか理解できないため、それはまだ役に立ちません-クライアントが切断されたため、サーバーを停止する前にそのようにマークする必要があります。
なしでサーバーを停止するにはどうすればよいObjectDisposedException
ですか?
PS私にとっての括弧は単なる補足です。私は非同期+スレッドの初心者なので、一部の動作がどのように発生するかわかりません。
c# - C# IDisposable パターンと ObjectDisposedException のスロー
皆さんに質問です。
私の会社では、Microsoft の MVC フレームワーク内で動作するアプリケーションを開発しています。実装しているコントローラー クラスは、 MVC 基本クラス Controllerから継承します。例:
チームで行っている議論は、Dispose() パターンを中心にしています。基本的に、これには、できれば Microsoft が承認したパターンに従って IDisposable インターフェイスを実装する必要があります。
たとえば、次のリンクを参照してください: http://msdn.microsoft.com/en-us/library/fs2xkftw%28v=vs.110%29.aspx
興味深いことに、コントローラー クラスは、管理対象または管理対象のいずれのリソースも所有していません。その結果、Dispose(bool) の実装が大幅に簡素化されます。
IsDisposed
次のメソッドで使用されるプロパティの使用 (または必要性) については、いくつかの意見の相違があります。
このメソッドは、「実際の」作業を行うすべてのメソッドの開始時に呼び出されます。ここでの考え方は、破棄されたオブジェクトを再度使用してはならないため、ObjectDisposedException をスローする必要があるということです。もう 1 つの意見は、 (プロパティの設定と基本クラスの呼び出しDispose(bool)
以外は) "何も" しないため、"処分された" オブジェクトは実際には使用できない状態ではないため、スローする理由がないというものです。したがって、実装する理由さえありません。IsDisposed
Dispose(bool)
Dispose(bool)
これに対する議論は、MyController が破棄され、そのメソッドの 1 つが呼び出されたときにスローする必要があるため、将来のバージョンでマネージド リソースおよび/またはアンマネージド リソースが追加されても動作が変わらないというものです。
この最後の点に対する議論は、 MyController は将来のバージョンでリソースを追加するべきではなく、将来リソースを追加する必要が生じた場合に派生させる必要があるということです。追加の質問は、(ライブラリ) クラス Controller が実装しないのはなぜThrowIfDisposed()
ですか?
つまり、要約すると、派閥 1 は実装したいとDispose(bool)
考えThrowIfDisposed()
ており、上記のように、派閥 2 はそれらが不要であると考えており、それらを廃止したいと考えています。
どちらの観点にもメリットがあると思いますが、本当に決心することはできません。意見?
.net - 警告: オブジェクトを複数回破棄しないでください
編集:
この質問は重複していません!おそらくよくある質問は「この警告はどういう意味ですか?」ですが、特定のコードで警告を修正する方法を尋ねているときは重複していません。警告の意味。–
VS でコードを分析すると、次の警告が表示されます。
CA2202 オブジェクトを複数回破棄しないでください オブジェクト 'OutputStream' は、メソッド 'FileSplitter.Split(String, Long, String, String, Boolean, Boolean)' で複数回破棄できます。System.ObjectDisposedException の生成を回避するには、オブジェクトに対して Dispose を複数回呼び出さないでください。 行: 490 WindowsApplication1 FileSplitter.vb 490
行490
は次のとおりです。
そして、行の他のオブジェクトについても同じ警告が表示されます498
。これは次のとおりです。
しかし、Using
キーワードを適切に使用しており、オブジェクトを複数回破棄していないと思います。何か間違ったことをしている場合、どうすればコードを修正できますか?
これは完全なブロックです:
アップデート
try/catch ブロックを追加した後も、同じ警告が表示されます。最後の try/catch を削除すると、警告が 1 つだけ表示されます。
asp.net-mvc - vNext. AspNet.Identity とカスタム UserStore。UserStore 破棄された例外
vNext を理解しようとしています。
MongoDB で動作し、これらのインターフェイスを実装するカスタム UserStore を作成しました。
Startup.cs に以下が追加されました。
次に、Visual Studio テンプレートから変更されていない AccountController を使用しようとしましたが、問題が発生しました。
サインインすると、UserStore.FindByNameAsync() で ObjectDisposedException を取得します - UserStore.Dispose() と呼ばれるもの。
github.com/aspnet Store.Dispose() の UserManager コードでは、UserManager.Dispose() でのみ呼び出されます。
Dispose の呼び出しを無視するだけですべて正常に動作しますが、これは良い方法ではありません。
だから私は何をすべきか分かりません
PS 質問は: UserStore.Dispose() を呼び出すことができるもの (およびその理由) は何ですか?
c# - Program.cs Main メソッドで破棄されたオブジェクトにアクセスできません
私はWinForm
2つの異なるフォームを持つアプリケーションを持っています。最初のコマンド ライン引数が"download"の場合、Download
フォームが表示されます。プログラムのメソッドでObjectDisposedException
オンラインApplication.Run(new Download(args));
になります。Main
更新: 例外スタック トレース
c# - .Include()、.ToList()、およびその他すべてを使用しているにもかかわらず、ObjectDisposedException
私のプロジェクトは C# .NET、MVC 5、EF6 です。ObjectDisposedException
データベースから取得したビューでオブジェクトを使用しています。私はおそらくすべての同様の質問を読んだことがありますが、うまくいき.Include()
ません。問題は遅延読み込みとは何の関係もないと考えています。
コントローラーメソッド:
私は using ステートメントがビューをラップしないようにしてみましquestionGroupWithLinks
た。別の場所で宣言しようとしました。それが読み込まれることを期待して、そのプロパティの 1 つを反復して割り当てようとしましquestionGroupWithLinks
た (違いはありませんでした。問題はビューにのみあるため. コントローラーメソッドを使用している限り、常に読み込まれます)、他のことも試しました.
ビュー (簡略化):
Model.First()
の代わりに を使用して質問グループにアクセスしようとしましforeach
たが、違いはありません。
私が何かを明確にするか、より多くの情報を投稿できるかどうか教えてください.