Шаг 40 - О многозадачности Windows и циклах

Как Вы знаете Windows 9x является многозадачной средой. Это везде пишется. Но на самом деле это далеко не совсем так. То есть в ней нет четкой установки приоритетов. Не верите ? Создайте макрос в Excel и запустите вот этот пример.

Sub Test()
	For x = 1 To 1000000000000
		Debug.Print x
	Next x
End Sub

Любая работа в этот момент будет проблематична. Это связанно с проблемами еще от Windows 3.1, тогда при программировании от Вас требовали периодически особенно в процессе длительных циклов передавать управление операционной системе. VBA до сих пор не избавлен от этой проблемы. Вам все равно надо это делать. Делается это с помошью DoEvents.

Используйте функцию DoEvents для передачи управления операционной системе каждый раз прохода цикла. Но она может быть полезна и при дисковых операциях ввода вывода, операциях с DDE. Давайте изменим наш пример.

Sub Test()
	For x = 1 To 1000000000000
		DoEvents
		Debug.Print x
	Next x
End Sub

Если Ваша программа тормозит выполнение других программ вспомните об этом шаге.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.