BroadcastChannelUnsubscribe
| BroadcastChannelUnsubscribe (Доставка сообщений) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция отменяет подписку на сообщения глобального канала сообщений, заданного по его имени или идентификатору (первый аргумент). См. описание BroadcastChannelSubscribe. Функция вызывается в потоке, для которого ранее была вызвана BroadcastChannelSubscribe. Отмена подписки происходит автоматически при завершении потока с подпиской. Если подписки не было, функция не выполняется никаких действий.
Синтаксис
BroadcastChannelUnsubscribe(<Имя или идентификатор канала (INT,STRING)>)
Аргументы
<Имя или идентификатор канала (INT,STRING)>- Имя канала для подписки (строка) или его идентификатор (число).
Примеры
//Пример простого отправителя и подписчика в одном фрагменте текста.
Function Подписчик()
аКодКанала:=BroadcastChannelSubscribe("Канал");
аНум:=0;
While 1 Do
If not BroadcastChannelReceiveMessage(аКодКанала,100,аНум) Then
Continue;
EndIf;
Message("Получено сообщение с ID "+аНум);
If аНум=100 Then
Break;
EndIf;
EndDo;
BroadcastChannelUnsubscribe(аКодКанала);
Message("Поток закончил работу...");
EndFunction
Mutex.ExecuteFunctionInSeparateThread("Подписчик",0);
аКодКанала:=BroadcastChannelSubscribe("Канал");
ИдСообщения:=1;
While ИдСообщения<=100 Do
If BroadcastChannelSendMessage(аКодКанала,ИдСообщения,"")>0 Then
ИдСообщения:=ИдСообщения+1;
EndIf;
EndDo;
//Ожидания завершения потока после принятия сообщения 100
//Без этой паузы, поток можен быть завершен форсировано, так как текущий (родительский) поток будет завершен
Sleep(1000);
//Будет выведено:
//Получено сообщение с ID 1
//Получено сообщение с ID 2
//..
//Получено сообщение с ID 100
//Поток закончил работу...