スレッドを使ってみる。まず、ThreadクラスがUWPにはないのでこれは使えない。スレッドプールのTaskクラスを使うことになる。
private void button_Click(object sender, RoutedEventArgs e)
{
Task task = new Task(async () =>
{
for (int i = 0; i < 10; i++)
{
Debug.WriteLine(i);
await Task.Delay(1000);
}
Debug.WriteLine("thread");
});
task.Start();
}
Threadクラスが使えないのでSleepができない。かわりにTask.Delayを使う。
次に別のスレッドから直接UIの操作はできないんだが、それをするにはDispatcher.RunAsyncを使う。
こんな感じだ。
private void button_Click(object sender, RoutedEventArgs e)
{
button.IsEnabled = false;
Task task = new Task(async () =>
{
for (int i = 0; i < 10; i++)
{
Debug.WriteLine(i);
await Task.Delay(1000);
}
Debug.WriteLine("thread");
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
button.IsEnabled = true;
});
});
task.Start();
}
コメント