問題タブ [unmanagedresources]
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# - アンマネージド リソースと Dispose()
メソッドに関するいくつかの記事を読んでいて、アンマネージ リソースはメソッド (または finalize() メソッド)Dispose()
から明示的に解放する必要があることがわかりました。その記事には、ファイル ハンドルとデータベース接続オブジェクトはアンマネージ リソースの例であると書かれています。Dispose()
それらが管理されていない理由と、Dispose() で適切に処理されないとどうなるかを誰かが説明できますか? ファイルハンドルとは何かわかりません。それらはどこに存在しますか?
c# - ICONINFO を破壊する方法は?
コードをステップ実行し、タスク マネージャーで、プロセスで使用されている GDI とユーザー オブジェクトの数を確認します。コメントで書いたコード内のオブジェクトの数を追跡しました。次のコードを実行した後、1 つの未リリースのユーザー オブジェクトと 1 つの未リリースの GDI オブジェクトが残ることに気付きました。それらをリリースするのを忘れた場所はどこですか?
oop - ガベージ コレクション言語で管理されていないリソースを処理するための代替概念はありますか?
ガベージ コレクションされたオブジェクト指向プログラミング言語は未使用のメモリを自動的に再利用しますが、ファイナライザーが時間内に (またはまったく) 実行されることを信頼できないため、他のすべての種類のリソース (つまり、ファイル、ソケットなど) は手動で解放する必要があります。
したがって、このようなリソース オブジェクトは通常、何らかの「閉じる」または「破棄」するメソッド/パターンを提供しますが、これはいくつかの理由で問題になる可能性があります。
- Disposeは手動で呼び出す必要があり、リソースをいつ解放する必要があるかが明確でない場合に問題が発生する可能性があります (手動のメモリ管理と同様の問題)。
- 適切なリソースのクリーンアップを保証するために、使い捨てリソースを含む各クラスも使い捨てにする必要があるため、使い捨てパターンはやや「バイラル」です。
- クラスに使い捨てメンバーを追加すると、クラスも使い捨てになる必要があり、クラスのインターフェイスと使用パターンが変更され、カプセル化が壊れます。
- 使い捨てパターンは、継承に問題を引き起こします。つまり、派生クラスが処分可能で、基本クラスがそうでない場合です。
では、そのようなリソースを適切に解放するための代替の概念/アプローチはありますか? その方向の論文/研究はありますか?
ios - プロジェクト内の画像リソースをクリーンアップする方法は何ですか?
プロジェクトで大規模なクリーンアップを行って、古い画像リソースを取り除きます。私が行う方法は、すべてのリソースを調べて、リソース名に一致するコードを検索することです。どのようにしますか?
c# - GetManifestResourceStream: DLL 内の EXE
まず、C# プロジェクトにアンマネージ EXE (実際には pdftotext.exe) を組み込みました。従来の方法を使用して呼び出す方法を作成しました。
この機能を含むすべての機能を保持するライブラリを構築することを決定するまで、私は完璧に機能しました。したがって、アンマネージ EXE を新しい DLL に組み込みました。ここで、プロジェクトからメソッドを呼び出そうとしましたが、「ストリーム」の値が「null」になるため、byte[ba] で停止します。私は現在道に迷っているので、助けていただければ幸いです。
wpf - Wpf マネージド リソースのクリーンアップ
カスタム コントロールが生成する可能性のあるアンマネージ リソースをクリーンアップする良い方法を見つけようとしています。このシナリオでは、親ウィンドウが、アンマネージ リソースを含むカスタム コントロールを持つ子ウィンドウを開きます (以下のコードを参照)。これらのリソースは、CustomControl が使用されなくなったとき、つまり、それが含まれているツリーがアンロードされたとき (子ウィンドウが閉じたとき)、またはツリーから削除されたとき (つまり、それ自体がアンロードされたとき) にクリーンアップする必要があります。
方法 1 : Unloaded イベント これは、子ウィンドウを手動で閉じたときにトリガーされますが、親ウィンドウを閉じた場合にはトリガーされません (その後、子ウィンドウが自動的に閉じられます)。
メソッド 2 : OnVisualChildrenChanged これは、子ウィンドウが親によって手動または自動で閉じられたときに呼び出されず、CustomControl が別の親要素に移動された場合にのみ使用されます。
方法 3 : Dispatcher.ShutdownStarted ユーザーがアプリを終了する前にいくつかの子ウィンドウを開いたり閉じたりした可能性があり、そのメモリを最後にクリーンアップするだけでは十分ではないため、これはあまり役に立ちません。
方法 4 : CustomControl を ChildWindow.Closing にサブスクライブさせる これも十分ではありません.. コントロールはウィンドウ内にあることを認識する必要はありません。
方法 5 : ファイナライザー が方法 3 と同じ問題に悩まされる.. 呼び出されるまでに時間がかかる可能性がある