スレッドを使ってみる。まず、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();
        }