2012-06-05 3 views
0

Я использовал QThreads в Qt, где мне нужно запустить исполняемый файл из командной строки из потока Qt и запустить его в контексте потока.Запуск QProcess из QThread

Я использовал приведенный ниже код для того же самого, который, кажется, работает нормально. Тем не менее, я хотел знать, разрешено ли такое использование, так как мы запускаем QProcess из QThread.

void Help_Menu_Thread::run() 
{ 
    Insert_Log("INFO::Help file referred by Admin"); 
    QProcess HelpStart; 
    HelpStart.execute("c:\\windows\\hh.exe LPRS_help.chm"); 
    HelpStart.close(); 
} 

Ожидает вашего ответа.

С уважением,

Саурабх Г.

ответ

1

Это безопасно использовать этот способ, если ваша основная программа не придется ждать выхода QProcess или для его завершения. Этот процесс helpstart начнется с того, что поток будет выполняться независимо от родительского процесса. Но было бы безопаснее использовать HelpStart.waitForFinished(), прежде чем вы позвоните HelpStart.close();

+0

Спасибо за быстрый ответ. У меня создалось впечатление, что HelpStart.execute() будет блокироваться до тех пор, пока исполняемый файл, вызванный внутри него, не завершится. Если это так, вышеуказанное использование будет правильным. Правильно? –

+0

Ну, это может помешать вашему потоку продолжить работу, но, очевидно, не ваша основная программа. – ScarCode