Как сделать, когда я получаю большие данные пользователя, чтобы знать, что метод работает без остановки? - PullRequest
0 голосов
/ 26 августа 2011

У меня есть метод, который может занять много времени, чтобы закончить. Я хочу предотвратить зависание моей программы во время работы этого метода.

Что я могу сделать, чтобы показать пользователю, что он запускает метод (например, индикатор выполнения)?

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Прежде всего, как сказал HB, если метод работает асинхронно в некотором фоновом потоке, тогда ваш пользовательский интерфейс не зависнет.

Если вы хотите, чтобы в вашем пользовательском интерфейсе отображался индикатор прогресса, который может сказать пользователю, как много прогрессапосле завершения вы можете использовать ReportProgress функциональность BackgroundWorker

0 голосов
/ 26 августа 2011

Вы должны использовать класс BackgroundWorker.Лучше, чем чистые темы, потому что он делает некоторые дополнительные вещи.Не могу вспомнить прямо сейчас, что я долгое время занимался WPF.Этот код поможет вам:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        BackgroundWorker worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.RunWorkerAsync();
    }

    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 10; i++ )
        {
            Thread.Sleep(500);
            Dispatcher.Invoke(new Action(() => { this.progressBar1.Value++; }));
        }
    }
...