停止するまでループし続けるWindowsサービスがあります。各ループの後、15 秒のスレッド間隔があります。以下に示すように、オブジェクトを解決するために Unity コンテナーを使用しています。
var processes = ProcessConfigurationSection.GetProcesses();
while (!_stopped)
{
try
{
foreach (var process in processes)
{
var worker = new Worker(DiContainer.UnityContainer.Resolve<IProcessDao>());
worker.RunProcess(process.Name, process.StoredProcedure, process.BatchSize);
}
Thread.Sleep(_interval);
}
catch (Exception ex)
{
Log.LogEvent(...);
}
}
while ループ内でワーカーのインスタンスを作成 (およびオブジェクトを解決) する必要がありますか?それとも、パフォーマンスを向上させるために while ループの外に配置する必要がありますか? また、このアプローチのいずれかでメモリリークが発生する可能性はありますか?