나는 아주 간단한 콘솔 응용 프로그램을 가지고 있습니다. 폴더 응용 프로그램은 폴더를 조사하고 몇 초 후에 모든 파일을 삭제합니다.콘솔 응용 프로그램은 많은 CPU ressource를 취합니다
코드
private static void Main(string[] args)
{
ILogger logger = new LoggerWriter(ConfigurationManager.AppSettings["Log"]);
Task.Factory.StartNew(() =>
{
while (true)
{
var time = int.Parse(ConfigurationManager.AppSettings["Interval"]);
Thread.Sleep(time);
var directory = new DirectoryInfo(ConfigurationManager.AppSettings["Path"]);
foreach (var file in directory.GetFiles())
{
file.Delete();
var log = new Logger {DateTime = DateTime.Now, Action = $"File {file.FullName} will be deleted."};
logger.Write(log);
}
}
}, TaskCreationOptions.LongRunning).ContinueWith(t =>
{
if (t.Exception != null)
Console.WriteLine(t.Exception.Message);
});
Console.WriteLine("Press Ctrl+C to stop.");
while (
!(Console.KeyAvailable && (Console.ReadKey(true).Key == ConsoleKey.C) &&
(Console.ReadKey(true).Modifiers == ConsoleModifiers.Control)))
{
// do something
}
}
}
나는 다음과 같은 .NET 4 작업 관리자 쇼와 Windows Server 2008의 응용 프로그램을 실행할 때 :
나는 FileWatcher을 사용하면, 동일한 시나리오입니다. 뭐가 잘못 되었 니?
구성에서 시간이 정확하게 파싱되었는지 확인하십니까? 상수로 바꾸고 더 좋아 지는지보십시오. 밀리 초를 기억하십시오 (또는 TimeSpan을 사용하십시오) –
'time'의 값은 무엇입니까? – MattC
아마도 로그 파일이 모니터링 된 위치에 기록 되었습니까? 그런 다음 삭제되고, 로거가 다시 생성됩니다. 루프? – mkonvisar