[*] Использование CreateProcess () с помощью cerathed_process flag:
< /ol>
Код: Выделить всё
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
CreateProcess(NULL, cmdLine, NULL, NULL, FALSE,
DETACHED_PROCESS, NULL, NULL, &si, &pi);
[*] Использование Windows Start Команда:
Код: Выделить всё
system("START /B tc_mail_smtp params > NUL");
< ol start = "3">
Использование std :: async < /code>: < /li>
< /ol>
auto res = std::async(std::launch::async, [&]() {
system("tc_mail_smtp params");
});
< /code>
Такая же проблема, что и подход #1 - процесс завершается преждевременно. < /p>
среда < /h2>
TeamCenter 14.2.1 < /li>
Windows Server 2019 < /li>
Visual Studio 2022 < /li>
c ++ 20 /C17 смешанная кодовая база < /li>
< /ul>
Вопрос < /h2>
Как мы можем сделать электронное письмо по -настоящему асинхронно, не блокируя пользовательский Процесс завершается даже после возврата обработчика/расширения? Поскольку это последняя операция в нашем коде, потоки здесь не очень полезны. отправка электронной почты, но мы предпочли бы более простой подход, если это возможно. запускается действиями пользователя в TeamCenter < /li>
Отправка по электронной почте является окончательной операцией, прежде чем обработчик вернется < /li>
Нам нужно поддерживать совместимость с окружающей средой TeamCenter < /li>
< /ul>
Кто -нибудь столкнулся с аналогичными проблемами с расширениями /обработчиками команды и асинхронными процессами? Каков рекомендуемый подход для таких сценариев?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -blocks-ui
Мобильная версия