問題タブ [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 投票する
8 に答える
1914 参照

c# - オブジェクトをいつ破棄する必要があるかを知るにはどうすればよいですか?

何かを処分する必要があるときはどうすればわかりますか?誰かが私が私のコードに私が処分する必要があるいくつかのオブジェクトを持っていたと言っています。何かを処分する必要があるとは思いもしませんでした(これはC#での最初の週です)。オブジェクトをいつ破棄する必要があるかを知るにはどうすればよいですか?私はhttp://msdn.microsoft.com/en-us/library/system.security.cryptography.hashalgorithm.aspxを使用していましたが、ページに破棄についての言及がないか、他のobjで言及されているのを見ました。 (SOの誰かによって)処分するように私に言いました。

IDisposableを継承する場合は必要ですが、継承する場合はどうすればわかりますか?

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

c# - デストラクタで dispose(false) を呼び出すのはなぜですか?

次に示すのは、典型的な破棄パターンの例です。

dispose の機能は理解していますが、デストラクタで dispose(false) を呼び出す理由がわかりません。定義を見ると、まったく何もしないのに、なぜこのようなコードを書くのでしょうか? デストラクタから dispose をまったく呼び出さないのは理にかなっているでしょうか?

0 投票する
4 に答える
1843 参照

.net - IDisposableインターフェースはどのように機能しますか?

管理されていないリソースの割り当てを解除するために使用されることは理解していますが、Dispose実際にいつ呼び出されるかについては混乱しています。ブロックの最後で呼び出されることは知っていusingますが、オブジェクトがガベージコレクションされたときにも呼び出されますか?

0 投票する
4 に答える
4482 参照

c# - 私のコードはリストを適切にクリーンアップしますか?

PDF ファイルの操作を行うサードパーティ コンポーネントがあります。操作を実行する必要があるときはいつでも、ドキュメント ストア (データベース、SharePoint、ファイル システムなど) から PDF ドキュメントを取得します。少し一貫性を持たせるために、PDF ドキュメントをbyte[].

このサードパーティ コンポーネントは、使用する必要があるメイン メソッドの 1 つへのパラメーターとしてMemoryStream[](MemoryStream配列) を想定しています。

この機能を独自のコンポーネントにラップして、アプリケーション内のさまざまな領域でこの機能を使用できるようにしようとしています。私は本質的に次のことを思いついた:

私の「ラッパー」への呼び出しコードは次のようになります。

上記に関するいくつかの質問:

  1. メソッドのusing句はAddFileToManipulate()冗長で不要ですか?
  2. オブジェクトのDispose()メソッドで問題なくクリーンアップできていますか?
  3. これは の「許容される」使用法MemoryStreamですか? 一度にメモリ内に非常に多くのファイルがあるとは思っていません...おそらく合計1〜10のPDFページで、各ページは約200KBです。ASP.NET サイトをサポートするサーバー上で実行するように設計されたアプリ。
  4. コメント/提案はありますか?

コードレビューをありがとう:)

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

c# - IDisposableがすべてのクラスに広がるのをどのように防ぎますか?

これらの簡単なクラスから始めてください...

次のような単純なクラスのセットがあるとしましょう。

ABusには、がありDriver、にDriverは2つShoeのsがあり、それぞれShoeに。がありShoelaceます。すべて非常にばかげています。

IDisposableオブジェクトをShoelaceに追加します

後で、の一部の操作をShoelaceマルチスレッド化できると判断したのでEventWaitHandle、スレッドが通信するためのを追加します。だからShoelace今は次のようになります:

靴紐にIDisposableを実装する

しかし、MicrosoftのFxCopは、「次のIDisposableタイプのメンバーを作成するため、「Shoelace」にIDisposableを実装します:「EventWaitHandle」」と文句を言います。

さて、私は実装IDisposableします、Shoelaceそして私のきちんとした小さなクラスはこの恐ろしい混乱になります:

または(コメント提供者が指摘しているように)それ自体には管理されていないリソースがないため、およびデストラクタShoelaceを必要とせずに、より単純なdispose実装を使用できます。Dispose(bool)

IDisposableが広がるのを恐れて見てください

そうです、それは修正されました。しかし、FxCopは、をShoe作成すると文句を言うShoelaceので、そうするShoe必要がありIDisposableます。

そしてDriver作成するShoeので、するDriver必要がありますIDisposable。そして、そうしなければならないなどBusを作成します。DriverBusIDisposable

突然、への小さな変更が多くの​​作業を引き起こし、上司は、に変更を加えるためShoelaceになぜチェックアウトする必要があるのか​​疑問に思っています。BusShoelace

質問

この拡散をどのように防止しますIDisposableが、それでも管理されていないオブジェクトが適切に廃棄されるようにしますか?

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

c# - using ブロックの途中で戻る

何かのようなもの:

returnステートメントの適切な場所ではないと思いますよね?

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

c# - .designer.cs ファイルを編集することを本当に意味するユーザー コントロールで破棄しますか?

破棄する必要がある内部データ構造を持つユーザー コントロールの場合、そのコードを .designer.cs ファイルの Dispose メソッドに追加する正しい場所はありますか?それとも、代わりに使用する予定のイベントまたは何かがありますか?

編集: これは winforms ユーザー コントロールです。

0 投票する
10 に答える
7402 参照

c# - 誰が IDisposable パブリック プロパティを処分しますか?

SomeDisposableObject実装するクラスがある場合IDisposable:

そして、パブリック プロパティとしてAContainerのインスタンスを持つ という別のクラスがあります。SomeDisposableObject

AContainerそれから FxCop は、それも行われていると主張しますIDisposable

これは問題ありませんが、別のクラスがまだインスタンスへの参照を持っている可能性があるため、m_someObject.Dispose()から安全に呼び出す方法がわかりません。AContainer.Dispose()m_someObject

このシナリオを回避する最善の方法は何ですか?

AContainer.SomeObject(他のコードは常に null 以外の値を持つことに依存していると仮定すると、単にインスタンスの作成を の外に移動することAContainerはオプションではありません)

編集:一部のコメント投稿者が問題を見逃していると思うので、いくつかの例で拡張します。m_someObject.Dispose() を呼び出すDispose()メソッドを実装しただけでは、次のような状況が発生します。AContainer

それは役に立ちますか?