ЧтениеДанных.ПрочитатьЦелое32Асинх

Методы · ReadInt32Async

Асинхронная функция. Считывает 32-битное целое число из потока. Результат выполнения обещания - результат чтения типа Число.

Синтаксис

ПрочитатьЦелое32Асинх(<ПорядокБайтов>)
Полное описание, параметры и ограничения

ЧтениеДанных.ПрочитатьЦелое32Асинх (DataReader.ReadInt32Async)

ЧтениеДанных (DataReader)

ПрочитатьЦелое32Асинх (ReadInt32Async)

Доступен, начиная с версии 8.3.18.

Синтаксис:
ПрочитатьЦелое32Асинх(<ПорядокБайтов>)
Параметры:

<ПорядокБайтов> (необязательный)
Тип: ПорядокБайтов.
Порядок байтов, используемый при чтении числа.
Если не задан, используется порядок, определенный для текущего экземпляра ЧтениеДанных.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - результат чтения типа Число.
Если не удалось прочитать число из-за того, что был достигнут конец потока, результатом обещания будет значение Неопределено.
Описание:

Асинхронная функция. Считывает 32-битное целое число из потока. Результат выполнения обещания - результат чтения типа Число.

Доступность:

Тонкий клиент, толстый клиент.

См. также:
ЧтениеДанных, метод НачатьЧтениеЦелого32
ЧтениеДанных, метод ПрочитатьЦелое32

Использование в версии:

Доступен, начиная с версии 8.3.18.

Методическая информация

Практические примеры

Асинхронно записать и прочитать четыре числовых поля по порядку

Полный клиентский обработчик использует Ждать для каждой операции. Чтение начинается только после закрытия записи и получения данных.

Где и как запускать

Модуль пустой управляемой формы учебной внешней обработки; тонкий или толстый клиент Windows. Вставьте весь модуль. Это не серверный код.

Подготовка

  1. Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.

  2. В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.

  3. Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.

  4. Пример работает только со своими данными в памяти; записи в базу, файлы и сеть нет.

  5. Имя кнопки формы должно быть КнопкаУчебныйПример. Если назвали иначе, переименуйте кнопку в дереве элементов формы.

  6. Доступность меняется у кнопки, не у команды. На время ожидания кнопка отключена для защиты от повторного запуска.

&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
    Элементы.КнопкаУчебныйПример.Доступность = Ложь;
    Поток = Новый ПотокВПамяти;
    Запись = Новый ЗаписьДанных(Поток);
    Попытка
        Ждать Запись.ЗаписатьБайтАсинх(7);
        Ждать Запись.ЗаписатьЦелое16Асинх(4660, ПорядокБайтов.LittleEndian);
        Ждать Запись.ЗаписатьЦелое32Асинх(16909060, ПорядокБайтов.BigEndian);
        Ждать Запись.ЗаписатьЦелое64Асинх(4294967296, ПорядокБайтов.LittleEndian);
        Ждать Запись.СброситьБуферыАсинх();
        Ждать Запись.ЗакрытьАсинх();
    Исключение
        Запись.Закрыть();
        Поток.Закрыть();
        Элементы.КнопкаУчебныйПример.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Чтение = Новый ЧтениеДанных(Данные);
    Попытка
        Версия = Ждать Чтение.ПрочитатьБайтАсинх();
        Поле16 = Ждать Чтение.ПрочитатьЦелое16Асинх(ПорядокБайтов.LittleEndian);
        Поле32 = Ждать Чтение.ПрочитатьЦелое32Асинх(ПорядокБайтов.BigEndian);
        Поле64 = Ждать Чтение.ПрочитатьЦелое64Асинх(ПорядокБайтов.LittleEndian);
        Конец = Ждать Чтение.ПрочитатьБайтАсинх();
        Сообщить(Данные.Размер() = 15);
        Сообщить(Версия = 7 И Поле16 = 4660 И Поле32 = 16909060 И Поле64 = 4294967296);
        Сообщить(Конец = Неопределено);
        Ждать Чтение.ЗакрытьАсинх();
    Исключение
        Чтение.Закрыть();
        Элементы.КнопкаУчебныйПример.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Элементы.КнопкаУчебныйПример.Доступность = Истина;
КонецПроцедуры

Разбор по шагам

  1. Асинх ставится у клиентской процедуры. Ждать извлекает результат обещания; без него переменная содержала бы Обещание, а не число.

  2. Четыре записи выполняем последовательно, не запускаем параллельные операции над одним потоком.

  3. Сбрасываем буферы, закрываем запись, затем закрываем свой ПотокВПамяти с получением данных.

  4. Читаем поля теми же ширинами и порядками байтов, после них проверяем конец дополнительным байтовым чтением.

  5. Синхронное закрытие в исключении допустимо именно в указанном клиенте Windows; веб-клиент для этого модуля не заявлен.

Как проверить результат

  1. Три контрольных сообщения Истина; пакет 15 байтов, версия 7.

  2. После окончания/обрабатываемой ошибки кнопка снова доступна. В рабочую базу записи нет.

Ожидаемый результат

Завершён последовательный асинхронный цикл записи и чтения учебного пакета.

На что обратить внимание

  1. Асинхронные методы этой группы доступны на клиенте, не на сервере.

  2. Асинх не делает операции потокобезопасными. Два одновременных чтения одного экземпляра не нужны.

  3. Не используйте пример как универсальную реализацию для браузера: подготовка ограничена Windows-клиентом.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.