03-06-2026, 02:13 PM
Thank you Gintaras for your suggestion to use Stop(). I'm going to implement not a pure windows service but as service-program starting from Taskmanager at logon-event of user to have access to user session and corresponding windows messages.
So I'll try following code:
var triggers = new ActionTriggers();
var threadTrigger = new Task(() =>
{
// init and configure triggers
triggers.Run();
});
threadTrigger.Start();
var cancelToken = new CancellationToken();
var threadStopper = new Task(() =>
{
while (!cancelToken.IsCancellationRequested) ;
{
// read external msg to receive CancelRequest
if (cancelToken.IsCancellationRequested)
{
triggers.Stop();
}
Thread.Sleep(5000);
}
});
threadStopper.Start();
Task.WhenAll([threadTrigger, threadStopper]).Wait();
So I'll try following code:
var triggers = new ActionTriggers();
var threadTrigger = new Task(() =>
{
// init and configure triggers
triggers.Run();
});
threadTrigger.Start();
var cancelToken = new CancellationToken();
var threadStopper = new Task(() =>
{
while (!cancelToken.IsCancellationRequested) ;
{
// read external msg to receive CancelRequest
if (cancelToken.IsCancellationRequested)
{
triggers.Stop();
}
Thread.Sleep(5000);
}
});
threadStopper.Start();
Task.WhenAll([threadTrigger, threadStopper]).Wait();

How to terminate ActionTriggers right way