Составители:
Рис.8.4. Процесс закрытия клиента и сервера
При возникновении ошибки DDE-функция возвращает значение NULL или
FALSE. Более подробная информация об ошибке может быть получена с помощью
функции DdeGetLastError:
UINT DdeGetLastError( DWORD dwInstID );
Поскольку функция DdeGetLastError требует задания идентификатора экземпляра
приложения, она не может применяться для получения информации об ошибке в случае
невыполнения функции DdeInitialize. Поэтому она возвращает собственные, расширен-
ные коды ошибок.
DMLERR_NO_ERROR - Успешная инициализация.
DMLERR_DLL_USAGE - Программа зарегистрирована для DDE-мониторинга и не
может использовать DDEML для выполнения транзакций.
DMLERR_INVALID_PARAMETER - Параметр содержит недопустимую информацию.
DMLERR_SYS_ERROR - Произошла внутренняя ошибка DDEML.
8.4.5. Синхронные и асинхронные транзакции
DDEML-клиенты могут выбирать между выполнением синхронных и асинхрон-
ных транзакций [12]. Отличие между синхронными и асинхронными операциями прояв-
ляется только на уровне программы-клиента. С точки зрения программы-сервера, тран-
закции обоих типов выглядят одинаково.
Преимущество асинхронных транзакций заключается в том, что они выполняются
быстрее и проще программируются. Асинхронные транзакции применяются сильно за-
груженными программами, которые должны обрабатывать значительный объем данных
при взаимодействии с DDEML-сервером, или программами, которые вынуждены регу-
лярно взаимодействовать с медленным сервером и хотят избежать нежелательных пе-
риодов ожидания ответа.
209
Рис.8.4. Процесс закрытия клиента и сервера При возникновении ошибки DDE-функция возвращает значение NULL или FALSE. Более подробная информация об ошибке может быть получена с помощью функции DdeGetLastError: UINT DdeGetLastError( DWORD dwInstID ); Поскольку функция DdeGetLastError требует задания идентификатора экземпляра приложения, она не может применяться для получения информации об ошибке в случае невыполнения функции DdeInitialize. Поэтому она возвращает собственные, расширен- ные коды ошибок. DMLERR_NO_ERROR - Успешная инициализация. DMLERR_DLL_USAGE - Программа зарегистрирована для DDE-мониторинга и не может использовать DDEML для выполнения транзакций. DMLERR_INVALID_PARAMETER - Параметр содержит недопустимую информацию. DMLERR_SYS_ERROR - Произошла внутренняя ошибка DDEML. 8.4.5. Синхронные и асинхронные транзакции DDEML-клиенты могут выбирать между выполнением синхронных и асинхрон- ных транзакций [12]. Отличие между синхронными и асинхронными операциями прояв- ляется только на уровне программы-клиента. С точки зрения программы-сервера, тран- закции обоих типов выглядят одинаково. Преимущество асинхронных транзакций заключается в том, что они выполняются быстрее и проще программируются. Асинхронные транзакции применяются сильно за- груженными программами, которые должны обрабатывать значительный объем данных при взаимодействии с DDEML-сервером, или программами, которые вынуждены регу- лярно взаимодействовать с медленным сервером и хотят избежать нежелательных пе- риодов ожидания ответа. 209
Страницы
- « первая
- ‹ предыдущая
- …
- 205
- 206
- 207
- 208
- 209
- …
- следующая ›
- последняя »