I'm trying to run an exe application in unity to perform some function and that exe file will take an input from my microphone when running in unity so i must wait until it exit while using waitforexit is nice to allow exe takes input but it's not good because my unity app during the exe running becomes stopped till it my exe finish and i want perform somethings else in unity while my exe running.
this is my code :-
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("E:\\app\\dist\\app.exe");
p.StartInfo.WorkingDirectory = @"\Assets\\app\\dist\\app.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();
p.WaitForExit();
You don't have to use
WaitForExit
since it's blocking the main Thread. There are two workarounds for your issue:1.Set
EnableRaisingEvents
totrue
. Subscribe to theExited
event and use that to determine when the opened program has closed. Use a boolean flag to determine if it is still opened or not in theUpdate
function.2.Continue with your
WaitForExit
but only use that code in a newThread
so that it doesn't block or freeze Unity's main Thread.Note that you can't use Unity's API from this new Thread. If you want to do so, use
UnityThread.executeInUpdate
. See this for more information.Thanks guys but i found the final solution that works well here. it will save your time
https://www.youtube.com/watch?v=C5VhaxQWcpE
this my code after applying the solution :-
And this my code after applying the solution in the video above
public async void run_speechToText()