예제 #1
0
        private async Task <List <string> > SearchDialogLoadingFunction(string searchText, CancellationToken ct, ProgressUpdater progressUpdater)
        {
            // simulate one second of loading
            await Task.Delay(1000, ct);

            // generate some random items
            int count = rand.Next(2, 30);
            var items = new List <string>(count);

            progressUpdater?.StartNewLoop(count);
            for (int i = count - 1; i >= 0; --i)
            {
                progressUpdater?.SetForLoop(i);
                items.Add($"{rand.Next(100)}-{searchText}");
                ct.ThrowIfCancellationRequested();
            }
            return(items);
        }
예제 #2
0
        private async void MenuItem_Dialogs_Progress_Click(object sender, RoutedEventArgs e)
        {
            const int msTime = 3000;

            _ProgressDialog.Show($"Showing for {msTime} milliseconds", null, 0);
            ProgressUpdater progressUpdater = _ProgressDialog.Updater;
            await Task.Run(async delegate
            {
                int progressSteps = 100;
                int msStep        = (int)Math.Round(msTime / (double)progressSteps);
                progressUpdater.StartNewLoop(progressSteps);
                for (int i = 0; i < progressSteps; ++i)
                {
                    progressUpdater.SetForLoop(i, true);
                    await Task.Delay(msStep);
                }
            });

            _ProgressDialog.Hide();
        }