Свойство sendPort
Свойство sendPort класса ReceivePort возвращает
объект типа SendPort, который связан с данным
портом получения. Каждый ReceivePort имеет ровно
один соответствующий ему SendPort. Через этот
порт отправки можно передавать сообщения в изолят,
которому принадлежит порт получения. Свойство доступно
только для чтения и не принимает параметров.
Синтаксис
receivePort.sendPort
Пример
Давайте создадим порт получения и получим его порт отправки, а затем выведем информацию о нём:
import 'dart:isolate';
void main()
{
ReceivePort receivePort = ReceivePort();
SendPort sendPort = receivePort.sendPort;
print(sendPort);
receivePort.close();
}
Результат выполнения кода:
"SendPort"
Пример
Давайте создадим изолят и передадим ему порт
отправки, полученный через свойство sendPort,
чтобы изолят мог отправить сообщение обратно:
import 'dart:isolate';
void isolateFunction(SendPort sendPort)
{
sendPort.send('message from isolate');
}
void main() async
{
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(
isolateFunction,
receivePort.sendPort
);
receivePort.listen((message) {
print(message);
receivePort.close();
});
}
Результат выполнения кода:
"message from isolate"
Пример
Давайте отправим несколько сообщений из главного
изолята в дочерний, используя порт отправки,
полученный через свойство sendPort:
import 'dart:isolate';
void isolateFunction(SendPort sendPort)
{
ReceivePort internalPort = ReceivePort();
sendPort.send(internalPort.sendPort);
internalPort.listen((message) {
print('Received: $message');
});
}
void main() async
{
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(
isolateFunction,
receivePort.sendPort
);
SendPort childSendPort = await receivePort.first;
childSendPort.send('12345');
childSendPort.send('abcde');
}
Результат выполнения кода:
"Received: 12345"
"Received: abcde"
Смотрите также
-
класс
ReceivePort,
который создаёт порт для получения сообщений -
класс
SendPort,
который представляет порт для отправки сообщений -
метод
send,
который отправляет сообщение через порт -
метод
spawn,
который создаёт новый изолят