I am porting some C# .Net code to WinRT and I am having trouble figuring out how to replace the following:
bool threadDone = false;
Thread updateThread = null;
void StartUpdateThread() {
threadDone = false;
updateThread = new Thread(new ThreadStart(SendUpdateThread));
updateThread.Start();
}
void StopUpdateThread() {
if (updateThread == null) return;
threadDone = true;
updateThread.Join();
updateThread = null;
}
void SendUpdateThread() {
while(!threadDone) {
...
Thread.Sleep(...);
}
}
What is the best way to replace this in WinRT. I have looked at ThreadPool.RunAsync(…) to start the code running, but I am not sure of the best wait to stop it and wait for its completion in StopUpdateThread. Also, what do I replace the sleep with in my thread function?
Since we’re talking about C# 5 GUI application, it would be probably best if you didn’t block anything and used
Tasks andasync–awaitinstead. That could look something like this:But to use this code correctly, you actually need to understand what
async–awaitdoes, so you should read up about that.Also, this might not be exactly what you need, but that’s hard to know based just on the information in your question.