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.
```
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.