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
Task
s andasync
-await
instead. That could look something like this:But to use this code correctly, you actually need to understand what
async
-await
does, 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.