Помощь с Асинхронной функцией

Поддержка
  • Всем привет.
    Помогите с реализацией записи результата в файл с помощью асинхронной функции.
    Объясню как всё работает и как я хочу чтобы работало.
    В OnApplicationStart создается ресурс(далее: ресурс1) (ВАЖНО!: с галкой на Ждать появление).
    в Main:
    _Запускаю асинхронную функцию(SCRIPT_RESULT) в 1 поток, первым потоком, в ней необходимо получать данные из ресурса1, которые я записываю в функции в многопотоке. Если данные в ресурсе1 подходят под мои задачи я их записываю здесь в файл номер1(условно), если данные не подходят, я их записываю в файл номер2(условно)
    _Запускаю функцию(_SCRIPT_FULL) в многопотоке(ВАЖНО!: не асинхронной), выполняется основной скрипт, отрабатывается отдельный ресурс введенный пользователем(далее: ресурс2), в котором я в случае успеха записываю данные в ресурс1(мгновенно), созданный в OnApplicationStart.

    В чем проблема:
    Софт запускается, отрабатывает отлично, но парс строки из ресурса1, созданного в OnApplicationStart и обработанного в функции в многопотоке(_SCRIPT_FULL), продолжает бесконечно ожидать ресурса и не записывает данные в файл. Как мне закончить выполнение скрипта, когда все ресурсы2 были отработаны и не потерять при этом все данные записанные в ресурс1.

    Что я пробовал:
    Когда заканчиваются данные в ресурс2 останавливал весь скрипт ожидая потоки, но тогда как я понимаю ресурсы1 все теряются, как записывать в файл не перезапуская поток в асинхронной функции.

    Помогите пожалуйста, я совсем потерял логику действий.

    05419173-8503-4530-b373-1a7ef05d4b20-изображение.png

  • @lxgx

    Перечитал несколько раз, ничего не понял.

    Предлагаю описать что ты хочешь сделать, а не как. Может быть путей решения задачи не один, как часто бывает.

  • @sergerdn уже разобрался, сделал так
    ресурс2(ресурс из файла)

    (onApplicationStart)

    создаю ресурс1(галочка на ожидать появления)
    

    (Main)

    асинхронная функция(SCRIPT_RESULT)

    количество элементов ресурс1
    

    while - ресурс1 > 0 || ресурс2 > 0

    парс строки из ресурс1
    
    удаляю текущий элемент из ресурс1
    
    записываю в файл(либо в список, чтобы потом по завершению скрипта сохранить результаты)
    
    количество элементов ресурс1
    
    количество элементов ресурс2
    

    (MAIN)

    функция в несколько потоков(_SCRIPT_FULL)

    if - ресурс2 > 0

      вызываю основную функцию скрипта(_MAIN_SCRIPT), где нужные мне данные результатов записываю в ресурс1
    

    else

      прерываю все потоки
    

    (MAIN)

    обрабатываю остановку скрипта

    как я опробовал, это самый лучший вариант из 5 разных
    Могу позже скинуть xml файлом