4

Windows Phone 用のアプリを開発しています。このアプリは、スタート画面にピン留めされたタイルの情報を更新するために、バックグラウンド エージェント (スケジュールされたタスク) を使用します。

4 つのアセンブリを生成する 4 つのプロジェクトがあります。

  • MyApp - UI ロジックを含むメイン プロジェクト
  • MyApp.Core - アプリのメイン ロジック
  • MyApp.Core.Agent - バックグラウンド エージェント用の MyApp.Core の簡易版
  • MyApp.Agent - バックグラウンド エージェント

これは、エージェントによってロードされたアセンブリのリストを含むエージェントのログの一部です。

Zlib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Core.Agent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Agent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
System.Runtime.Serialization, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
Microsoft.Phone.Interop, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24EEC0D8C86CDA1E
Microsoft.Phone, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24EEC0D8C86CDA1E
System.Core, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Xml, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
System, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
System.Windows.RuntimeHost, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
mscorlib, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC

MyApp.Agent は MyApp.Core.Agent でのみ参照を持ち、他のプロジェクトへの参照はありません。しかし、ご覧のとおり、バックグラウンド エージェントの開始時に MyApp と MyApp.Core も読み込まれます。なぜそれが起こるのですか?理解できません。MyApp および MyApp.Core アセンブリは、貴重なメモリ スペースを削減するだけです。

4

1 に答える 1

0

これが発生する主な理由は、バックグラウンド エージェントからの描画を有効にするためです (基本的に、この dll にはビジュアル ツリーをサポートする適切なコンポーネントがすべて含まれているため、読み込まれます)。すべてのエージェントがバックグラウンドでレンダリングするわけではないため、これは必ずしも大きな理由ではありませんが、フレームワークは起動時に少量の dll しか読み取らないため、そうでないエージェントのヒットは非常に小さくなります。

于 2013-06-05T04:51:51.010 に答える