問題タブ [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 に答える
2082 参照

c# - datatableはキャッシュに保存されていますが、使用するたびにdisposeを呼び出す必要がありますか?

単純なケース:

DataTableをキャッシュに入れます

ここで問題は、キャッシュに保存されていても、呼び出しごとにtable.dispose()を呼び出す必要があるかどうかです。オブジェクトが常に同じであることを意味しますか?または、キャッシュは毎回コピーを作成しますか?

どうも :)

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

c# - このオブジェクトを処分するだけで十分ですか? それとももっとやる必要がありますか?

私はこのコードを持っています:-

その破棄スコープを離れる直前に、このコード行を配置する必要がありますか..またはすでに破棄の「呼び出し」を行いますか。

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

c# - C#でのIDisposableとデストラクタの使用の違いは何ですか?

デストラクタではなくクラスに IDispose を実装するのはいつですか? この記事を読みましたが、まだ要点がわかりません。

オブジェクトに IDispose を実装すると、ガベージ コレクターがそれを行うのを待つのではなく、オブジェクトを明示的に「破棄」できると仮定しています。これは正しいです?

オブジェクトに対して常に明示的に Dispose を呼び出す必要があるということですか? これのいくつかの一般的な例は何ですか?

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

.net - usingステートメントを含むユニットテストメソッド

usingステートメントでインスタンス化された使い捨てオブジェクトをモックする方法がないため、ユニットテストとusingステートメントが実際に連携できるかどうか疑問に思っています。次のusingステートメントを含むメソッドを効果的に単体テストするにはどうすればよいですか?

ユニットテストをしているときにステートメントを使用することは単に禁止されていますか?

コメントをいただければ幸いです。

0 投票する
2 に答える
465 参照

c# - Winforms: Visual Studio for Windows Forms によって作成された、自動的に作成された Dispose() メソッドのコードを削除しても安全ですか?

バックグラウンド

Visual Studio 2008 で新しい Windows フォーム アプリケーションを作成します。これにより、"Form1" というクラスを持つスケルトン プロジェクトが作成されます。VS2008 は Dispose() メソッドを自動的に作成します。

私は同僚のオフィス (上級開発者) に迷い込みました - 素晴らしい人で、スマートで、チャットの優れたデザインスキルです - しかし、彼が入力していることに気付きました - 彼がコードベースをナビゲートしたとき、VS2008 が作成した Dispose() メソッドのこのセクションを削除しましたフォーム用。

それで、その理由を聞いたところ、保管する必要はないとのことでした。

質問

  • このコードを削除しても安全ですか?
  • そのままにしておくか、削除することの長所と短所は何ですか?
0 投票する
4 に答える
8751 参照

c# - DbConnection の適切な破棄

DbConnection をラップする DatabaseHelper というクラスがあります。このクラスを using ステートメントにセットアップする適切な方法は何ですか? IDisposible を実装しましたが、いつどこで Connection.Close() または Connection.Dispose() を呼び出す必要があるかわかりません。

独自の Dispose() メソッドで単に Connection.Dispose() を呼び出すだけで、DbConnection オブジェクトから SocketException が発生することがあります。これは、古い接続が開いたままになっているためだと思いますが、例外に詳細が添付されていないため、確かなことはわかりません。

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

vb.net - 封じ込めツリー?

IDipose を理解していると思いましたが、Accelerated VB.NET のベスト プラクティスのセクションを読んだだけで、「オブジェクトには iDispose を実装するオブジェクトが含まれていないため、iDispose を呼び出すコンテインメント ツリーを反復処理する必要はありません」と記載されています。

この「包含ツリー」は、プログラムが使用したことを知っており、それを破壊するものですか、それとも、オブジェクトを破壊するときに見なければならない包含クラス/コレクションがありますか?

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

c# - Application.RunがArgumentExceptionをスローしましたが未処理でした

アプリケーションを閉じる必要があるという条件があるので、これを呼び出します。certianフラグを設定するときにDispose()を実行します。

最初は、this.Dispose()を呼び出した後、関数を呼び出す際の問題だと思ったので、コードを最後に呼び出すように移動しましたが、それでも「ArgumentExceptionが処理されませんでした」「パラメータが無効です」というメッセージが表示されます。Application.Run(new myApp();行。

私は何が間違っているのですか?途中で何かが恋しかったですか?または、アプリケーションを閉じるためのより良い方法がありますか?

0 投票する
9 に答える
22501 参照

c# - 非同期に処分する方法は?

IDisposableインターフェイスを実装するクラスがあるとします。このようなもの:

http://www.flickr.com/photos/garthof/3149605015/

MyClassはいくつかのアンマネージ リソースを使用するため、IDisposableのDispose()メソッドはそれらのリソースを解放します。MyClassは次のように使用する必要があります。


ここで、 DoSomething()を非同期的に呼び出すメソッドを実装したいと考えています。MyClassに新しいメソッドを追加します。

http://www.flickr.com/photos/garthof/3149605005/

ここで、クライアント側から、MyClassを次のように使用する必要があります。

ただし、他に何もしないと、DoSomething()が呼び出される前にオブジェクトmyClassが破棄される可能性があるため、これは失敗する可能性があります(予期しないObjectDisposedExceptionがスローされます)。そのため、 DoSomething()への非同期呼び出しが完了するまで、 Dispose()メソッドへの呼び出し(暗黙的または明示的) を遅らせる必要があります。

Dispose()メソッドのコードは非同期で実行する必要があり、すべての非同期呼び出しが解決されるのは一度だけだと思います。これを達成するための最良の方法を知りたいです。

ありがとう。

注: 簡単にするために、Dispose() メソッドの実装方法の詳細には触れていません。実生活では、私は通常Dispose パターンに従います。


更新:返信ありがとうございます。あなたの努力に感謝します。chakrit がコメントしたように、非同期 DoSomething への複数の呼び出しを行うことができる必要があります。理想的には、次のようなものがうまく機能するはずです。

カウンティング セマフォを調べてみます。探しているものと思われます。また、設計上の問題である可能性もあります。都合がよければ、実際のケースとMyClassが実際に行っていることをいくつか紹介します。

0 投票する
9 に答える
1325 参照

c# - Dispose() を明示的に呼び出すことができないステートメントの途中で作成された IDisposable オブジェクトはどうなりますか?

たとえば、Sharepoint を使用していて (これは他のオブジェクト モデルにも当てはまります)、ステートメントの途中で、IDisposable SPWeb オブジェクトを作成するメソッド (この場合は "OpenWeb()") を呼び出します。ここで、SPWeb オブジェクトへの参照がないため、SPWeb オブジェクトで Dispose() を呼び出すことができません。 では、このメモリ リークについて心配する必要はありますか?

ステートメントを複数の行に分割して、Dispose を呼び出すための SPWeb 参照を取得できることはわかっています。

私の質問は美学に関するものではなく、参照がないため、明示的に Dispose() を呼び出すことができない IDisposable オブジェクトに何が起こるかについての質問であることに注意してください。

最初に質問した時、言葉足らずで申し訳ありませんでした。それ以来、私はそれを言い換えました。これまでのすべての応答に感謝します。