Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- private static void Main(string[] args)
- {
- FileSystemWatcher fileWatcher = new FileSystemWatcher();
- fileWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
- fileWatcher.Created += fileWatcher_Created;
- fileWatcher.EnableRaisingEvents = true;
- Console.ReadLine();
- }
- private static void fileWatcher_Created(object sender, FileSystemEventArgs e)
- {
- WorkOnFile(e.FullPath);
- }
- //must be done completely. How do I ensure it?
- private static void WorkOnFile(string fileName)
- {
- using (FileStream f = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
- {
- Thread.Sleep(40000); // some long operations
- }
- }
- }
- var scanDirectoryIn = new DirectoryInfo(folderIn);
- foreach (var fileInfo in scanDirectoryIn.GetFiles())
- {
- if (fileInfo.Extension != ".csv") continue;
- if (DateTime.UtcNow.Subtract(fileInfo.LastWriteTimeUtc).TotalMinutes < 5) continue;
- try
- {
- fileInfo.MoveTo(folderOut + "\" + fileInfo.Name);
- }
- catch (Exception) {}
- }
- //must be done completely. How do I ensure it?
- private static void WorkOnFile(string fileName)
- {
- while(true){
- try{
- using (FileStream f = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
- {
- Thread.Sleep(40000); // some long operations
- break; //exit while() infinite loop
- }
- }
- catch(Exception e){
- //file is locked because being written. wait a few seconds then retry
- Thread.Sleep(10000);
- }
- }
- }
Add Comment
Please, Sign In to add comment