KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an app, listening for the *.log file in a chosen folder. I used FileSystemWatcher . But there is a problem. The other app responsible for making that file takes following steps: Make a *.gz file Unpack it to txt file (some random file name) Change the *.txt name to proper one with *.log extension. And I can not change this behaviour. So I made 2 FileSystemWatcher s for *.gz, and *.txt files. Why? Because this app sometimes doesn't unpack the gz file, and sometimes doesn't rename the txt file to the final *.log file. FileSystemWatcher2 catches txt file, then (in the most cases it is renamed to log in the next 1000ms) I need to wait some time to check if txt file exists (if not, it seems to be renamed to the final *.log file). The question is, how to check if file exists without Thread.Sleep() to prevent UI freeze? I hope it is clear, if not I will try to describe it better. I think this is a complex problem. Some code sample: Watcher for gz file: private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e) { //this is for gz files in case if gz file is not unpacked automatically by other app //I need to wait and check if gz was unpacked, if not, unpack it by myself, //then txt watcher will catch that Thread.Sleep(5000); if (File.Exists(e.FullPath)) { try { byte[] dataBuffer = new byte[4096]; using (System.IO.Stream fs = new FileStream(e.FullPath, FileMode.Open, FileAccess.Read)) { using (GZipInputStream gzipStream = new GZipInputStream(fs)) { string fnOut = Path.Combine(path_to_watcher, Path.GetFile
Tags (comma-separated)
Save Edits
Cancel