トップ回答者
WPFで起動時にウィンドウで使用されるライブラリをロードしたい

質問
回答
すべての返信
-
最初に書いておくべきのことを書き忘れていました 申し訳ありません
ロードを行いたいライブラリは.Netライブラリです
プロセスを実行した時点ではウィンドウを表示されていないためロードされず ウィンドウの初回実行時にロードされるものを
OnStartupの時点でロードさせたいと思っています
ウィンドウのロード時に呼び出されるライブラリは下記です
System.Runtime.Serialization.Formatters.Soap.dll
PresentationCore.resources.dll
UIAutomationTypes.dll
PresentationFramework-SystemData.dll
-
GCの対象になって困るようでしたら、以下のようにtypeofをGC.KeepAliveしておくと良いかもしれません。
Good way to preload .NET assembly
http://stackoverflow.com/questions/4895719/good-way-to-preload-net-assembly★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
-
GCの対象になって困るようでしたら、以下のようにtypeofをGC.KeepAliveしておくと良いかもしれません。
Good way to preload .NET assembly
http://stackoverflow.com/questions/4895719/good-way-to-preload-net-assemblyいや、TypeはGCの対象にはならないです確か…(MemberInfoはなったりしますが)
というかまあ、アセンブリの事前ロード目的ですので、とにかくいったんロードが必要な状況を作ればいいだけのイメージです。
※別にGCされてもそれはそれで構わない。
--追記
なんかリンク先のサイトの書き込み、突っ込みどころが満載の気が…
--追記2
すみません、突っ込みどころというのは勘違いでした。
GCの話じゃないですね、リンク先は。
最適化でスルーされるのを確実に防止するなら、という話ですね。
※typeofは副作用があるので最適化されないと思いますが、不安ならやっとく方が確実とは言えます。
- 編集済み なちゃ 2014年10月27日 2:45
-
あ~、そうですね。アセンブリは手動でアンロードしないと自動でアンロードされないですし、GCとは全く関係ないですね。リンク先の回答の評価が良いんで、うっかり流してしまいました。ごめんなさい。ご指摘ありがとうございました。
#そう言えば、クリスタルレポートの初回印刷が遅くて調べたこともあったんですが、必ず印刷するわけじゃないし、当時のメモリのことも考えてまっいいか放っておいたんですが、今の環境だとプレロードしとくべきかなぁ。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/