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

c# - いつ廃棄する必要がありますか?

次のようなコードがある場合:

ペンとブラシを処分する必要がありますか?bmpとgはどうですか?

私の主な質問は、これらを手動で廃棄する場合、スコープから外れるとすぐに廃棄されないのはなぜですか?手動で処分しなかった場合、それはどうなるでしょうか?人々がこれを手動で行うのは遅延ですか?

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

c# - using() および複数のラップされたストリームで破棄する

たとえば、実行している場合、最も外側のストリームに using() だけが必要だというのは正しいですか

StreamWriter を破棄すると、基になるストリームも破棄/閉じる必要があるため、これを行う必要はありません ?:

(これらは、ラップされたストリームを破棄する方法の単なる例であり、単に StringWriter を使用するなどの代替手段を探していないことに注意してください。)

0 投票する
8 に答える
5922 参照

sharepoint - SPWeb.Site、Dispose()を呼び出す必要がありますか?

2009年6月8日15:52更新短い回答NO元の質問:

廃棄に関するSPWeb.Siteのガイダンスを提供するリファレンスが見つかりません。SharePointオブジェクトの破棄に関するより一般的なベストプラクティスのドキュメントをいくつか確認しました。

残念ながら、これらのガイドラインのいずれもSPWeb.Siteについて言及していません。コンテキストを与えるために、メソッドの引数としてSPWebを受け入れるパブリック拡張APIを作成しています。

SPWebのrefelectorでClose()メソッドを調べましたが、これはSPWeb.Dispose()によって呼び出され、実際のSPSiteメンバーフィールドが破棄されることを示すものは何もありません。

更新:2009年6月8日13:47

アレックスの提案で

「100回実行されるループに入れ、WSSv3およびMOSS2007でのSPSite/ SPWebリークのトラブルシューティングで説明されているSPRequestStackTraceレジストリキーを使用して、テストコードが問題の原因であることを確認します。」

Webパーツ内に含まれている次のコードを実行しました。

SharePointログには何も表示されませんでした。

この素朴な実験から実際の結論を出すことを躊躇しますが、SPWeb.Siteを破棄する必要はないことを示唆しています。このテーマについてもっと情報を持っている人から具体的な答えを得るのは本当に素晴らしいことです。

更新:2009年6月8日14:52 グレッグのコメントによるプロンプトm_Siteの割り当てを作成しましたが、最終的には常に内部コンストラクターを介してSPWebに渡されるようです。たとえば、SPWeb.OpenWebはこれを新しいSPWeb()に渡します。したがって、SPWeb.Siteは破棄されるべきではないと確信しています。破棄された場合、実際に問題が発生する可能性があります。

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

c# - WPFアプリケーションでDispose()メソッドを呼び出す場合

テキストボックスとボタンを含む単純なWPFシングルウィンドウアプリケーションがあります。また、WPFウィンドウでWindowsフォームのNotifyIconとDateTimePickerを使用します。すべてのコントロールを効果的に破棄するにはどうすればよいですか?

0 投票する
1 に答える
224 参照

.net - sendasync (smtpclient) を使用する場合、トークンは ref ではなく val で送信されますか?

リフレクターで調べたところ、関数のパラメーターにオブジェクト トークンを持つ sendasync(smtpclient) が byval であるようです。

コールバック関数で添付ファイルを解放しようとするのは理にかなっていますか?

どこでも人々 (私自身を含む) は sendasync(mailmessage,mailmessage) を行っているようです

そしてコールバック(SendCompletedCallback)で次のようなことをしています:

しかし、sendasync は byval であるため、元の添付ファイルを破棄するべきではありませんよね?

私の場合、添付ファイルはメモリストリームです

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

.net - 明示的な終了が必要ですか?

EntLib 4.1 を使用しています。

タスクを実行した後、次のように _db オブジェクトを破棄する必要がありますか?

...またはEntLibフレームワークはそれを自動的に処理しますか?

0 投票する
1 に答える
1275 参照

powershell - プロセスの終了前に Powershell 実行空間オブジェクトを閉じる/破棄しないと、どのような影響がありますか?

(System.Management.Automation.Runspaces からの) Runspace オブジェクトのシングルトン インスタンスをアプリケーションの有効期間にわたって維持するアプリケーションを考えると、アプリケーションが終了する前に Runspace を破棄しないと、どのような副作用が生じる可能性がありますか?

私が提示された設計上の根拠は、この場合、メモリ/ハンドル リークは問題にならないというものです。これは、プロセスの終了によってこれらのリソースがすべて強制的に解放され、シングルトンの有効期間がアプリケーションと同じであるためです。その設計で無視されている他の考慮事項はありますか?

0 投票する
1 に答える
1312 参照

interop - IronPython の相互運用アセンブリを介して使用している VB6 COM オブジェクトを破棄するにはどうすればよいですか?

ここで見られるように、IronPython で .NET 相互運用機能アセンブリを使用してサード パーティの COM コンポーネントを使用しています: How can I use a VB6 COM 'reference' in IronPython?

この分野での私の経験は素晴らしいものでした.シームレスに機能するものの量に非常に感銘を受けました.1つのことを除いて.

サード パーティの COM コンポーネントは、Microsoft の DAO ライブラリ (バージョンは不明) を使用して、さらに別のサード パーティ アプリケーションによって作成されたデータベースを操作します。問題は、このデータベース ファイルがプログラムの実行中に再作成されることです。この COM オブジェクトを「初期化解除」したいと考えています。特に、自分のコード (COM コンポーネントの属性にアクセスしたり、そのメソッドを呼び出したりするコード) を実行すると、最初にルーチンを実行したときに問題なく動作します。ただし、次回、サード パーティの COM コンポーネントは、データベース (MSAccess 95 .mdb ファイル) が既に使用されていることを示すメッセージ ボックスを表示し、再試行するオプションを提供します。再試行を押すと確実に機能するため、主な問題はこのダイアログが表示されることです。

したがって、私の理論では、COM コンポーネントがデータベースへのハンドルをリークしており、呼び出す「クリーンアップ」メソッドが見つかりません。試してみましたが、うまくいきませ.Dispose()んでした。

私の最後の手段は、COM オブジェクトを呼び出すコードを、std in/out を介してメイン プロセスと対話する別の IronPython プロセスにすることです。これは、COM オブジェクトが提供する役割が「このすべての情報を今すぐ提供する」ユース ケースに近いためです。継続的に必要な依存関係の代わりに。

私はそのシナリオを避けたいと思っています.COM(または実際には.NET)に慣れていないので、明らかな.Dispose方法などが欠けていることを願っています。

FreeLibraryクリーンな方法がない場合、ネイティブ コードで繰り返し呼び出しを行うのと同じように、プロセスからアセンブリを強制的にアンロードできますか? (コードがオブジェクトをもう使用しないことを保証するので、メモリ保護エラーにつながる参照の欠落を心配する必要はありません)


編集:

これを解決できなかったので、プロセス外の方法を使用し、子のバッチ プロセスがシャットダウンしたときにウィンドウをクリーンアップさせました。

0 投票する
1 に答える
485 参照

sharepoint - SharePoint のクロス メソッド破棄パターン

SharePoint サイトのコンテンツにさまざまな変更を加えるクラスを作成しました。そのクラス内で、遅延解決されたプロパティを実装しました

SPSite と SPWeb の両方を破棄する必要があり、ベスト プラクティスドキュメントによると、この状況は Cross Method Dispose Pattern と呼ばれています。

クラスに IDisposable を実装し (そこにサイトと Web を配置)、呼び出し元がusing句を介してアクセスするようにしました。それは「ベストプラクティス」に従っているのでしょうか、それとも問題を別の方法で処理する必要がありましたか?

私は厳密な参照カウントのバックグラウンドを持っていることに注意してください。ガベージ処理に関する私の見解が少しずれている場合は、修正してください。

0 投票する
1 に答える
171 参照

.net - 独自のBeginInvoke()を呼び出してコントロールを破棄する

独自のBeginInvoke()を呼び出すことによってコントロールを破棄することは、良いアイデアですか、それとも悪いアイデアですか?または、このタスクを実行するために親コントロールなどを使用しますか?

別のスレッドからコントロールにアクセスしているため、Invokeを使用しています。