問題タブ [dispose]

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.

0 投票する
3 に答える
4418 参照

c# - ソケットの破棄/2回のファイナライズの問題?

私は、ソケットを開き、リクエストを作成し、応答をリッスンするクラスのいくつかのコード(急いで追加するのではなく、まったく信頼していません)で作業しています。これは、可能な方法で例外をスローしていますxunitでテストしたときに理解できません。同じ例外が「ライブ」で発生すると想定していますが、クラスはシングルトンによって参照されているため、おそらく非表示になっています

この問題は、xunit で「System.CannotUnloadAppDomainException: アプリケーション ドメインのアンロード中にエラーが発生しました」として明らかになり、内部例外は、ソケットを閉じるときにファイナライザー内で (本質的に) スローされる「System.ObjectDisposedException」です! close を呼び出して破棄するソケットへの他の参照は Socket クラスで保護されていないため、オブジェクトを他にどのように破棄できるかはわかりません。

さらに、単に ObjectDisposedException をキャッチして吸収すると、リスナー スレッドを閉じる行にヒットしたときに xunit が終了します。

ソケットを閉じるように求められる前に、ソケットを破棄する方法がわかりません。

ソケットに関する私の知識は、この問題を見つけてから学んだことだけなので、SO が必要とするすべてのものを提供したかどうかはわかりません。そうでなければLMK!

0 投票する
5 に答える
15815 参照

c# - ASP.NETでWebサービス参照を破棄する必要がありますか?

ガベージコレクターはWebサービス参照をクリーンアップしますか、それとも呼び出したメソッドの呼び出しが終了した後にサービス参照でdisposeを呼び出す必要がありますか?

0 投票する
3 に答える
1546 参照

c# - Dispose(bool) メソッドの実装では、メンバーを null に設定すべきではありませんか?

パターンを議論するガイド/ノート/記事のいずれも、メソッドでIDisposable内部メンバーを設定する必要があることを示唆していません(特に、それらがメモリを大量に消費する獣である場合)。nullDispose(bool)

内部のベンチマーク ツールをデバッグしているときに、その重要性に気づきました。以前は、内部に大きな配列を含むこのバッファがありました。以前は、ベンチマーク プログラム全体に静的バッファを使用していました。バッファーの処理が完了すると、この内部配列を解放する方法はなく、このバッファーを解放可能にすることもできません (静的であるため)。

したがって、Dispose()が呼び出された後、破棄されるオブジェクト自体がGCによって回収されず、設定されていなくても、使用しているすべてのリソースを解放して再び利用できるようにするために、クラスはできる限りのことを行う必要があると思いますメンバーを null にすることで、GC による内部オブジェクトの収集を許可しないということは、Dispose の実装が完全ではないことを意味します。

これについてどう思いますか。

0 投票する
3 に答える
3563 参照

c# - 静的ブラシの廃棄

バイオリズムアプリを書いています。それをテストするために、私はボタンとPictureBoxを備えたフォームを持っています。ボタンをクリックすると、

これは初めて正常に実行されますが、2回目のクリックで次の例外が発生します。

エラーの原因となるカットダウン関数は次のとおりです。

コメントアウトした場合、ブラシの廃棄は問題なく機能しますが、それに満足していないため、別の解決策を見つけたいと考えています。手伝ってくれませんか?

0 投票する
7 に答える
43984 参照

c# - アプリケーションで System.Timers.Timer を使用する場合、System.Timers.Timer を破棄する必要がありますか?

アプリケーションのクラスの 1 つで System.Timers.Timer クラスを使用しています。Timer クラスには、IDisposable インターフェイスを実装する親 Component クラスから継承された Dispose メソッドがあることを知っています。以下のクラスのインスタンスは、アプリケーションのライフサイクル中に何度も作成されます。それらのそれぞれには、クラスのライフサイクル中に継続的に Elapsed イベントを生成する Timer クラスのインスタンスがあります。Timer クラスを使用してタイマー オブジェクトを破棄するクラスに IDisposable インターフェイスを実装する必要がありますか? (これをまったく行わないコードを見たことがあります)。次のように以下のクラスを使用すると、一部のアンマネージ リソースが解放されないのではないかと心配しています。

クラス:

0 投票する
7 に答える
109399 参照

c# - WPF ユーザー コントロールの破棄

サード パーティが使用することを目的としたカスタム WPF ユーザー コントロールを作成しました。私のコントロールには使い捨て可能なプライベート メンバーがあり、含まれているウィンドウ/アプリケーションが閉じられると、その dispose メソッドが常に呼び出されるようにしたいと考えています。ただし、UserControl は使い捨てではありません。

IDisposable インターフェイスを実装して Unloaded イベントをサブスクライブしようとしましたが、ホスト アプリケーションが閉じたときにどちらも呼び出されませんでした。MSDN によると、Unloaded イベントはまったく発生しない可能性があります。また、ユーザーがテーマを変更したときなど、複数回トリガーされることもあります。

可能であれば、特定の Dispose メソッドを呼び出すことを覚えているコントロールのコンシューマーに依存したくありません。

これまでに見つけた唯一の解決策は、Dispatcher の ShutdownStarted イベントをサブスクライブすることです。これは合理的なアプローチですか?

0 投票する
6 に答える
9270 参照

c# - IDisposable とは何ですか?

.NET にガベージ コレクションがある場合、なぜ明示的に呼び出す必要があるのIDisposableでしょうか。

0 投票する
3 に答える
6303 参照

c# - NotifyIcon が消えることを保証する方法は?

子 (モーダル) フォームの 1 つで NotifyIcon コントロールを使用していますが、正常に動作しています。期待どおりにバルーン ヒントを表示したり、マウス イベントを処理したりします。ただし、予想どおりに消えません。具体的には、子フォームを終了し、親がコントロールに戻ってもアイコンは残ります。ツールチップにアクセスできるので、いわば「生きている」のです。

その後、アプリケーション全体を終了しても、カーソルをその上に置くまで画像は残ります。マウスを合わせると消えます。

正常に動作させるにはどうすればよいですか?通常は悪い言葉です:-0 それを作成したフォームが消えると、どうすればそれを消すことができますか?

誰かがこれを引き起こしていることを説明できますか?

G

編集:クローズドエバーントのフォームで Dispose メソッドを呼び出すと、これは機能しますが、本当にこれを行う必要がありますか? G