Поделиться через


Пример однопотокового приложения с длительным выполнением вычислений

Обновлен: Ноябрь 2007

В этом примере демонстрируются способы предотвращения перехода Пользовательский интерфейс в состояние "не отвечает" в однопотоковом приложении, выполняющем длинную операцию.

В этом примере имеется кнопка Button, при нажатии на которую начинается расчет простых чисел. Теоретически этот расчет является бесконечным, поэтому если обработчик событий перейдет в цикл и начнет расчет простых чисел, вызов никогда не вернется, и поток Пользовательский интерфейс перейдет в "спящее" состояние.

Чтобы избежать этого, в примере асинхронное задание ставится в очередь в диспетчере Dispatcher потока Пользовательский интерфейс путем вызова метода BeginInvoke. Задание, помещенное в очередь, обрабатывает одно число, когда поток Пользовательский интерфейс находится в состоянии SystemIdle, и помещает другой вызов в диспетчер для обработки следующего числа, когда поток Пользовательский интерфейс в очередной раз перейдет в состояние простоя.

Это гарантирует, что поток Пользовательский интерфейс будет всегда иметь приоритет над расчетом очередного числа, и Пользовательский интерфейс не прекратит работу.

Обсуждение этого примера см. в разделе Модель потоков.

В этом примере демонстрируется конкретная функциональная возможность Windows Presentation Foundation, и поэтому рекомендации по разработке приложений не соблюдаются. Более полное рассмотрение Windows Presentation Foundation (WPF) и рекомендации по тактике разработки приложений Microsoft .NET Framework см. в следующих разделах:

Специальные возможности: Рекомендации по специальным возможностям

Локализация: Общие сведения о глобализации и локализации WPF

Производительность: Улучшение производительности приложений WPF

Безопасность: Безопасность Windows Presentation Foundation

Download sample

Построение примера

  • Установите пакет средств разработки программного обеспечения для Windows и откройте окно командной строки среды его построения. В меню "Пуск" выделите пункты "Все программы", "Пакет SDK для Microsoft Windows", а затем "Оболочки CMD".

  • Загрузите образец, как правило из документации пакета SDK, на жесткий диск.

  • Чтобы построить образец из окна командной строки среды построения, перейдите в исходный каталог образца. В командной строке введите MSBUILD.

  • Чтобы построить образец в Microsoft Visual Studio, загрузите решение образца или файл проекта и нажмите сочетание клавиш CTRL + SHIFT + B.

Выполнение примера

  • Для запуска скомпилированного образца в окне командной строки среды построения, выполните EXE-файл в папке Bin\Debug или Bin\Release, содержащихся в папке кода источника образца.

  • Для запуска скомпилированного образца с помощью отладки в Visual Studio, нажмите клавишу F5.

См. также

Задачи

Пример имитации службы погоды с помощью диспетчера

Пример многопоточного веб-обозревателя

Пример Disable Command Source Via System Timer

Основные понятия

Модель потоков