Is it ok to use "async" with a ThreadStart method?
Solution 1:
You can do this, but it wouldn't be a good idea. As soon as the first await
hits that is not synchronously completed, the rest of the work will be done on a continuation, not the thread you started (_thread
); the thread you start will terminate at the first such await
. There is no guarantee that a continuation will go back to the originating thread, and in your scenario, it cannot - that thread is now toast. That means that:
-
_thread
is meaningless and does not represent the state of the operation; as such, yourStop()
method with a_thread.Join();
doesn't do what you expect it to do - you've created a thread (allocating threads is expensive, in particular because of the size of the stack) only to have it exit almost immediately
Both of these issues can avoided by using Task.Run
to start such operations.