PostEvent()
Синтаксис
PostEvent(Event [, Window , Object [, Type [, Data]]])
Описание
Отправляет событие (оно попадает в конец внутренней очереди событий).
Параметры
Event Идентификатор события для отправки. Список событий PureBasic см. в описании WindowEvent(). При использовании пользовательского события для него можно использовать значения не меньше чем #PB_Event_FirstCustomValue, чтобы избежать конфликтов с внутренними событиями. Window (дополн.) Номер (#Window) Окна, связанного с событием. При использовании пользовательского события это может быть любое целое число. Это значение может быть получено с помощью EventWindow(). Object (дополн.) Номер (#Object) объекта, связанного с событием. Это может быть, например Номер Гаджета или Меню. При использовании пользовательского события это может быть любое положительное целое число (включая нуль). Это значение можно получить с помощью EventGadget(). Type (дополн.) Тип, связанный с событием. При использовании пользовательского события для него можно использовать значения не меньше чем #PB_EventType_FirstCustomValue, чтобы избежать конфликтов с внутренними значениями. Это значение можно получить с помощью EventType(). Data (дополн.) Данные, связанные с событием. Этот параметр имеет действие только при использовании пользовательского события и может быть любым целым числом. Это значение можно получить с помощью функции EventData().
Возвращаемое значение
Ничего.
Комментарии
Эта команда может быть очень полезной, чтобы связаться между потоками и основным циклом событий. Например, поток может отправить пользовательское событие, когда он закончил свою обработку (со связанным data), таким образом, основной цикл получит его, и последующая обработка может быть сделана.
Пример
; Все наши пользовательские события Enumeration #PB_Event_FirstCustomValue #EvenementDebutAction ; это есть минимальное значение для пользовательского события (если ниже будут конфликты). #EvenementFinAction EndEnumeration Procedure Thread(Valeur) PostEvent(#EvenementDebutAction, 0, 1, #PB_EventType_FirstCustomValue, 10) Delay(3000) PostEvent(#EvenementFinAction, 0, 1, #PB_EventType_FirstCustomValue, 100) EndProcedure OpenWindow(0, 200, 200, 100, 100, "PostEvent") CreateThread(@Thread(), 0) Repeat Event = WaitWindowEvent() Select Event Case #EvenementDebutAction Debug "Поток начал действовать... " Debug EventData() Case #EvenementFinAction Debug "Поток завершает действовать" Debug EventData() EndSelect Until Event = #PB_Event_CloseWindow
См. также
WindowEvent(), EventWindow(), EventGadget(), EventType(), EventData()
Поддерживаемые OS
Все