I want check task state and i write code
```
RunningTask rt = task.Run();
do
{
Thread.Sleep(1000);
} while (rt.State == TaskState.Running);
```
However, I have infinite loop, because state is not updated (running always). When I change cycle body to
```
do
{
Thread.Sleep(1000);
rt.Refresh(); // COMException here
} while (rt.State == TaskState.Running);
```
Code fires exception if state change from Running to Unknown.
It is correct behaviour?
P.S. In the end, i write first cycle version with
```
while (task.State == TaskState.Running);
```
and I do not have problems.
Comments: ** Comment from web user: dahall **
```
RunningTask rt = task.Run();
do
{
Thread.Sleep(1000);
} while (rt.State == TaskState.Running);
```
However, I have infinite loop, because state is not updated (running always). When I change cycle body to
```
do
{
Thread.Sleep(1000);
rt.Refresh(); // COMException here
} while (rt.State == TaskState.Running);
```
Code fires exception if state change from Running to Unknown.
It is correct behaviour?
P.S. In the end, i write first cycle version with
```
while (task.State == TaskState.Running);
```
and I do not have problems.
Comments: ** Comment from web user: dahall **
As I suspected that error code is SCHED_E_TASK_NOT_RUNNING: There is no running instance of the task. That confirms my suspicion I shared with you. I think you are much safer using TaskEventWatcher. There is an example in the Documentation area for using it.
I have already started moving to GitHub (https://github.com/dahall/TaskScheduler). The code is there as is most of the documentation. I haven't closed this site yet as I haven't found a solution for migrating the Discussions area.