I have a class which has the purpose of providing file operations i.e. providing functionality to create the file, read, write and rewrite to the file. So, the main constituent of the class is functions.
However, there is one functionality where I am using a Timer to make the thread wait for one second. So, basically I have an AutoResetEvent and Timer working in conjunction.
Now, since we have to register the Timer_Elapsed callback to the Timer, we need a place to do it. Since the class is static, I can use a static constructor to do that but this makes me think whether the class should be static at first place.
I am confused whether to make the class static or non-static as it is mostly about giving simple functionality but at the same time Timer and AutoResetEvent have become kind of state elements of the class. I would appreciate suggestions.
Edit Reason why I am using a Timer is:
I am trying to synchronize file access between two processes by using FileShare.None. In order to do that I am in a loop to reattempt to gain access to the FileStream for which I have to wait 1 second each iteration. I am developing functionality in legacy code so I want to avoid Thread.Sleep. Also I know that a mutex would be a better option to synchronize access to a file but I cannot use it as I have so many such files that creating a mutex for each is not preferred (I am asked to not create mutex).