Combine ManualResetEvent and token.WaitHandle.WaitOne

.net, c#, multithreading, task

Solution

Youre on the right way, try this:

WaitHandle.WaitAny(
    new[] { token.WaitHandle, ForceLoopIteration },
    TimeSpan.FromSeconds(67));

This waits for the occurence of one of the following

- cancelation is requested on `token`

- `ForceLoopIteration` is set

- timeout of 67 seconds has been elapsed

Problem

I got: ``` internal void Start(CancellationToken token) { while (!token.IsCancellationRequested) { //do work token.WaitHandle.WaitOne(TimeSpan.FromSeconds(67)); } } ``` So i start this method in new `Task` and do some work in loop untill i need to cancel it with `token` Some times i need to force new loop iteration, without waiting this 67 seconds. I think i need something like: ``` public ManualResetEvent ForceLoopIteration { get; set; } ``` Meanwhile i cant understand how to use it with token. Maybe something like `WaitHandle.WaitAny()`?

Original source