Я запускаю процесс из единицы, и это займет некоторое время (это может занять до 30 минут), однако я хочу, чтобы единство выполнялось в течение максимум 5 минут и если не было выхода, вернитесь. Я также хочу показать что-то подобное во время этого ожидания в течение 5 минут Как сделать что-то во время процесса в Unity3d
У кого-нибудь есть идея, как это сделать? Я попытался с помощью этой строки кода
myProcess.WaitForExit(1000 * 60 * 5);
, но я ничего не могу сделать, пока он ждет, я предполагаю, что это меня или что-то блокирует, может кто-нибудь помочь?
EDITED:
public void onClickFindSol(){
paused=true;
ReadRedFace();
ReadGreenFace();
ReadBlueFace();
ReadYellowFace();
ReadOrangeFace();
ReadWhiteFace();
if (File.Exists (path))
File.Delete (path);
System.IO.File.WriteAllText(path,InputToAlgo);
myProcess = new Process();
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.FileName = (System.Environment.CurrentDirectory)+Path.DirectorySeparatorChar+"rubik3Sticker.ida2";
myProcess.EnableRaisingEvents = true;
myProcess.StartInfo.WorkingDirectory = (System.Environment.CurrentDirectory)+Path.DirectorySeparatorChar;
myProcess.StartInfo.Arguments = "corner.bin edge1.bin edge2.bin";
myProcess.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
{
if (!String.IsNullOrEmpty(e.Data)){
timer = 0f;
StepsOfSolution++;
print(e.Data);
solution.output.Add(e.Data);
}
});
myProcess.Start();
myProcess.BeginOutputReadLine();
}
void Update(){
if (myProcess != null){
if(timer>fiveMinutes){
myProcess.Kill();
myProcess.Close();
badExit=true;
myProcess=null;
return;
}
timer += Time.deltaTime;
if (!myProcess.HasExited){
RubikScene.PleaseWait.SetActive(true);
}
else{
if(badExit){
RubikScene.PleaseWait.SetActive(false);
RubikScene.TooLong.SetActive(true);
print("TimeOut!");
}else{
paused=false;
Application.LoadLevel("solution");
}
}
}
}
сделать проверку таймер на выходе каждые Х секунд, пока таймер не более 5 минут, если он затем остановить процесс, не нужно блокировать ничего –
@ user2320445 WaitForExit блокирует все. – Programmer