티스토리 뷰
services.AddHostedService<FileWatcherService>();
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await Task.Delay(TimeSpan.FromSeconds(3));
// 감시할 폴더
var path = Path.Combine(Directory.GetCurrentDirectory(), "files");
if (Directory.Exists(path) == false)
{
Directory.CreateDirectory(path);
}
await CheckFilesAsync(path);
var watcher = new FileSystemWatcher(path)
{
IncludeSubdirectories = true
};
watcher.Created += OnCreated;
watcher.EnableRaisingEvents = true;
while (stoppingToken.IsCancellationRequested == false)
{
if (filesQueue.Count > 0)
{
var filePath = filesQueue.Dequeue();
await CheckAsync(filePath);
}
await Task.Delay(TimeSpan.FromSeconds(1));
}
}
- 위와 같이 FileWatcher를 등록하여 사용하는데 동작하다 중간 중간 멈추는 현상 발생
- IIS가 유휴상태로 돌입하였을 시 백그라운드에 등록된 작업을 while하지 않음
- 아무 REST API로 IIS가 동작되었을 시 유휴상태가 해제되어 백그라운드 작업또한 while을 재진행.
- 보통 백그라운드 작업을 등록하지 않는 것이 일반적이라고 하나 필요 시 참고하여 개발해야함
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크