I couldn’t find a solution for this yet…hope someone can help me.
I have a backgroundworker that runs until it is cancelled by the user (it reads data from a socket and writes it into a file).
Now I want to split the output file after a certain period of time, e.g. every 2 mins create a new file.
For this to happen I’d like to use a timer, something like
private void bckWrkSocket_DoWork(object sender, DoWorkEventArgs e)
{
//create timer and set its interval to e.Argument
//start timer
while(true)
{
if(timer.finished == true)
{
//close old file and create new
//restart timer
}
...
}
}
Any suggestions / ideas?
edit: Stopwatch did the trick. Here’s my solution
Here’s my solution:
private void bckWrkSocket_DoWork(object sender, DoWorkEventArgs e)
{
long targettime = (long) e.Argument;
Stopwatch watch = new Stopwatch();
if (targettime > 0)
watch.Start();
while(true)
{
if ((targettime > 0) && (watch.ElapsedMilliseconds >= targettime))
{
...
watch.Reset();
watch.Start();
}
}
Use a Stopwatch and check within the while loop the Elapsed property. That way you prevent from concurrent writing and closing the same file.