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

Таким образом, в общем случае возможность непосредственного запуска оконной процедуры может служить источником скрытых ошибок. Такие ошибки не проявляются, пока временные соотношения в процессе выполнения приложения не приведут к повторному запуску оконной процедуры. Воспроизведение при отладке ошибочной ситуации из-за фактора случайности также затруднено. В подтверждение данного положения можно отметить, что и продукты Microsoft не всегда корректно работают в данной ситуации. Я не смог пройти рассмотренные оконные процедуры по шагам, так как отладчик при этом зависает. Тот же результат получается, если запустить приложения, установив контрольные остановы возле каждого оператора MessageBox().

Элементы компьютерной графики Вывод простейших графических примитивов Графическим примитивом называется изображение, выводимое на экран одним обращением к функции операционной системы или графической библиотеки. Например, если в библиотеке есть функция рисования отрезка Line(xl.yl,x2.y2) по координатам его концов, то для данной системы графическим примитивом будет именно отрезок.


⇐ Предыдущая| |Следующая ⇒