問題タブ [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# - c#opennetCFバックグラウンドワーカー-e.resultはObjectDisposedExceptionを与えます
私はC#でバックグラウンドワーカーを使用するのは初めてです。ここにクラスがあり、その下にそのインスタンスがあり、その下に私の問題を定義します。
私はクラスDrawingを持っています:
このクラスのオブジェクトをインスタンス化する:
これが私の問題です:private void bgWorker_RunWorkerCompleted(object sender、RunWorkerCompletedEventArgs e)
本来あるべきe.Resultが得られません。デバッグしてe.Resultを確認すると、パネルのプロパティに次の例外メッセージが表示されます。
したがって、オブジェクトは破棄されますが、「なぜ」が私の質問であり、どうすればこれを修正できますか?
誰かが私に答えてくれることを願っています、これは私を夢中にさせています。私が持っている別の質問:引数で「ref」を使用することは許可されていますか?それは悪いプログラミングですか?
前もって感謝します。
私はまた、私がバックグラウンドワーカーをどのように理解するかをここに書きました:
これが、バックグラウンドワーカーの「ルール」だと私が思うものです。
-
-
-
c# - 破棄してはならないフォームを .Show() するときの ObjectDisposedException
他のいくつかの質問をチェックアウトしましたが、明らかに最善の解決策は、そもそもこの問題を引き起こす動作を防ぐことですが、問題は非常に断続的であり、再現性が非常に低いです。
私は基本的にメインフォームとサブフォームを持っています。サブフォームは、メインフォームのメニューやボタンから次のように表示されます。
サブフォームは実際にはメインフォームにあります(良くも悪くも。実際にこれを変更したいのですが、そうするにはかなりの時間がかかります):
サブフォームの Dispose 関数は、「閉じる」ボタンと「X」ボタンが実際にフォームを非表示にするように変更されているため、毎回再作成する必要はありません。メイン画面が閉じると、「フラグ」が 2 に設定されるため、他のフォームは実際に閉じても問題ないことを認識します。
問題は、なぜこれが何度も何度も問題なく機能するのかということですが、文字通り、約 1/1000 の確率で例外が発生するというか、なぜ私のフォームが破棄されるのでしょうか?
ガベージ コレクタが混乱している疑いがありました。これは、ガベージ コレクタが何時間も実行されていると発生頻度がわずかに高くなるためです。
.net - ASP.Net Entity Framework、オブジェクト コンテキスト エラー
私は 4 層の ASP.Net Web アプリケーションを構築しています。レイヤーは次のとおりです。
- データレイヤー
- エンティティ層
- ビジネスレイヤー
- UIレイヤー
エンティティ レイヤーにはデータ モデル クラスがあり、T4 テンプレート (POCO) を使用してデータレイヤーのエンティティ データ モデル (edmx ファイル) から構築されます。エンティティ レイヤーは、他のすべてのレイヤーで参照されます。
私のデータレイヤーには、次のような機能を持つ SourceKeyRepository というクラスがあります。
このアプリケーションの他のレイヤーでクエリを実行したくないため、遅延読み込みは無効になっています。UI レイヤーの情報にアクセスしようとすると、次のエラーが表示されます。
ObjectContext インスタンスは破棄されており、接続を必要とする操作には使用できなくなりました。
これは、私の DataModelContainer "dmc" が破棄されたためだと確信しています。この IEnumerable オブジェクトをデータ層から返して、ObjectContext に依存せず、DataModel のみに依存するようにするにはどうすればよいですか?
データ層でのみ遅延読み込みが発生するように制限する方法はありますか?
c# - フォームはどういうわけか処分されます
私はクライアントサーバーアプリケーションを持っており、データの送受信とクライアントのリッスンに従来のソケットとスレッドを使用しています。
アプリケーションは正常に動作しますが、ランダムな時間の後にObjectDisposedExceptionが発生します。
そのコードはクライアントのソケットスレッドから呼び出され、Invoke()メソッドを使用してUIスレッドでコードを実行します。
フォームを手動で破棄したり、Close()を使用したりしない(ユーザーが[閉じる]ボタンをクリックするとフォームが閉じられる)ことはないと確信しているので、何が原因で破棄されるのかわかりません。
編集:フォームを閉じるときに例外はスローされません-完全にランダムに発生します。
vb.net - VB.NETでTreeViewからフォームを表示する
ツリービューコントロールを使用して特定のフォームを表示しようとしています。そのノードのtag
値は、表示する必要のあるフォームのインスタンスに設定されています。DoubleClickイベントにあるコードは、フォームを初めて表示するとうまく機能しますが、その後、オブジェクトが破棄された例外が発生します。ご覧のとおり、タグをリセットして処理してみましたが、うまくいきませんでした。例外が発生してタグを正しいタイプのフォームにリセットするたびにswitchステートメントを実行せずにフォームを複数回表示できる方法はありますか?フォームの表示方法に似た、より良いものが欲しいのですが。
c# - RSAKeyValue で拡張メソッドを使用する場合の ObjectDisposedException
RSAKeyValueの次の単純な拡張メソッドを作成しようとしていました。
ただし、を使用するたびにToXmlString
、例外が発生するようです。
System.ObjectDisposedException: 安全なハンドルが閉じられました
をカプセル化しGetXml().OuterXml
て、コード内のさまざまな場所で繰り返されないようにする方法はありObjectDisposedException
ますか?
c# - C#でのスレッドセーフな破壊可能なイベント発生クラス
最近、選択プロセスの一環としてクラスを実装するように依頼されました。私は要求通りにプログラムを行いました。しかし、私はテストに失敗しました。私は自分のソリューションの何が悪いのか知りたいと思っています。どんな助けでも大歓迎です。質問と私の解決策を以下に示します
質問:
構築から毎秒イベントを発生させるスレッドセーフクラスを実装します。経過秒数を求める関数が必要です。このクラスはIDisposableを実装する必要があり、disposeの呼び出し後の秒経過関数の呼び出しは失敗するはずです。
私の解決策:
c# - ハンドルはDisposed例外をスローします
C#WinForms:初めてフォームを開いたとき、frm1.Hanldeは問題ありませんが、フォームを閉じてもう一度開くと、handleの値がSystem.ObjectDisposedExceptionの例外をスローしています....私が何をしているのかデバッグと修正を検討する必要がありますか?
linq-to-sql - コンテキストを破棄するときにLINQ2SQLが子の関係を取得しようとするのはなぜですか?
私は自分のプロジェクトの1つでLINQ2SQLを使用しており、顧客-> Documents1、Documents2、Documents3、Address、Invoicesなどの多くの関係があります。
LoadWith(p => p.Documents1)... etcを使用する場合、パフォーマンスの問題があります。これらの多数の関係がすべてメモリのリストにロードされている2000人の顧客を想像してみてください。
ドキュメント->顧客の逆は、関係が軽いほど問題ではありません。
したがって、すべてのLoadWithを削除して、Customer->Addressの関係をそのままにしておくようにします。ここで、Document1を開いてから顧客を開くと、顧客をシリアル化するときにオブジェクトの破棄の例外が発生します。serializeメソッドは基本的にこの例外をスローします。
シリアル化方法:
私が顧客を獲得する方法:
アドレス関係を除くすべてのLoadWithを削除したい。このエラーが常に再現されるとは限らないのですが、場合によっては見つかりませんでした。
DataContractSerializerコンストラクターの変更を推測できましたが、正しく理解できません。
助けていただければ幸いです。
c# - 非同期で使用される HttpWebRequest で Abort を呼び出すと、ObjectDisposedException が発生する
タイトルが示すように、私は非同期で使用されている(つまり ) をObjectDisposedException
呼び出すときに を取得しているようで、私の人生では、それを防ぐ方法を理解できません。私は一日中解決策を探していたので、助けていただければ幸いです。問題を説明する簡単な例を次に示します。"Abort"
HttpWebRequest
BeginGetResponse
私がやっていることは次のとおりです。これを正常に実行すると、応答がコンソールに正常に書き込まれます。ただし、Fiddler を使用して低速のインターネット接続 (または基本的に接続なし) をシミュレートし、タイムアウト コールバックが実行されると、前述のメッセージが表示されますObjectDisposedException
("Timed out!"
最初にコンソールに書き込まれます)。Abort
を呼び出さないと、この例外は発生しませんHttpWebRequest
。
誰が私が間違っているのか教えてもらえますか? .NET 3.5 フレームワークをターゲットにしています。事前に感謝します。
例外情報/呼び出しスタックは次のとおりです。