Windows ランタイム コンポーネントに IBackgroundTask を実装していて、ロガーの依存関係を挿入したいのですが、バックグラウンド タスクを呼び出すとアプリケーションが終了します。コンストラクターにも入りません。Ninject を DI コンテナーとして使用していますが、アプリ内の他の場所で問題なく使用できます。
私はこのようなことをしたいと思います:
private readonly ILog _logger;
public BackroundTask(ILog logger)
{
_logger = logger;
}
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
try
{
// do something here
}
catch (Exception ex)
{
// log the error with injected logger...
logger.ErrorFormat("{0}Error in QueueTimer {1}{0}",
Environment.NewLine, ex.ToString());
}
deferral.Complete();
}
何を試しても成功せず、呼び出し元の .cs ファイルで OnComplete メソッドにログオンするだけです。