Category Archives: File System Watcher

File System Watcher

Language Used: C# WinForms

Skills Used:

  • First Exposure to GUI Programming.
  • Working with the FileSystemWatcher class in C#.
  • Working on multiple thread and communicating between them.
  • Working with SQLite within a program (Creating, Inserting, Querying, and Deleting).

Project Overview:

This was my first true project working with GUI programming, which also happened to be a project for one of my classes. We were to utilize the FileSystemWatcher class built into C# to have the user specify a extension to watch, along with the root directory to watch from. Our program, when running, would then watch for any files or directories (depending on what extension the user wants to watch) that are created, renamed, changed, or deleted within the root folder or any of it’s sub-directories. Once the user stops watching files, and there has been some changes recorded on the output, the user will be able to send those entries into a Database file. Once that file is in existence, they’ll be able to pull up a second form and perform queries on the database file, specified by what extensions they want to see.

Project Status: Complete

This project was extremely fun to work on, for it was involving a lot of aspects/topics of programming that I have never dealt with before. It challenged me on what I knew, and required me to research different topics to be able to implement them, like WinForms, communicating between threads, and SQLite to name a few. Once the project was done, it was satisfying to have an actual interface rather than everything being text-based. It was a nice change of pace, and motivates me to create more GUI-style programs, or porting older assignments to have an interface.

I tried to make the interface as intuitive as possible, so someone with no programming experience would be able to use the software with ease. All the possible options activate and deactivate as they become valid. For example, in order to have the “Start” button active, the user must have specified an extension (or all files) and a root directory, only then will the button be active. I also added in a third form to house the software’s instructions, in a nicely formatted fashion. This was a better solution to showing the instructions than in a MessageBox, where there is much more limited formatting.

Overall, this project was a lot of fun to work on. I enjoyed learning about all the tools that WinForms have available for GUI development, and how to have them behave in the expected manner. Threads were another interesting topic that we covered while working on this project, and how to properly have threads communicate with each other using delegates. I learned a lot from doing this project, and I’m looking forward to whatever my next GUI project may be!