2010-06-07 5 views
3

.air 파일을 만들 수있는 asp.net 응용 프로그램이 있습니다. 우리가 다음 코드를 사용하여이 작업을 수행하려면웹 사이트를 방해하지 않고 asp.net에서 프로세스를 시작하려면 어떻게해야합니까?

System.Diagnostics.Process process = new System.Diagnostics.Process(); 

//process.StartInfo.FileName = strBatchFile; 
if (File.Exists(@"C:\Program Files\Java\jre6\bin\java.exe")) 
{ 
    process.StartInfo.FileName = @"C:\Program Files\Java\jre6\bin\java.exe"; 
} 
else 
{ 
    process.StartInfo.FileName = @"C:\Program Files (x86)\Java\jre6\bin\java.exe"; 
} 
process.StartInfo.Arguments = GetArguments(); 
process.StartInfo.RedirectStandardOutput = true; 
process.StartInfo.RedirectStandardError = true; 
process.StartInfo.UseShellExecute = false; 
process.PriorityClass = ProcessPriorityClass.Idle; 

process.Start(); 

string strOutput = process.StandardOutput.ReadToEnd(); 
string strError = process.StandardError.ReadToEnd(); 

HttpContext.Current.Response.Write(strOutput + "<p>" + strError + "</p>"); 

process.WaitForExit(); 

그런데 문제는 이제 가끔 서버의 CPU가 응용 프로그램을 일으키는 원인이 100 %에 도달하는 것은 우리가이 생각 (매우 느리게 실행하고 심지어 세션을 잃고 있다는 것입니다 문제).

공기 파일을 생성하거나 asp.net 응용 프로그램을 방해하지 않고 외부 프로세스를 실행하는 방법에 대한 다른 해결책이 있습니까? 문제는 여기에있다 M.

+1

제쳐두고 영어 경로명을 하드 코딩하는 대신 System.Environment.GetFolderPath (...)를 사용해야 함을 알고 있습니까? –

+0

thx. 이것은 내가 유지해야하는 낡은 프로젝트이므로 필요하지 않으면 실제로 많이 변경하지 않습니다 :) – user29964

답변

5

건배 : process.WaitForExit();, 당신은 단순히 응용 프로그램의 실행을 중지합니다. 프로세스를 시작하기 위해 스레드를 사용하고 생성이 완료되는시기를 알려주는 일종의 IPC (원격 프로세스 통신, 명명 된 파이프와 같은)를 원할 수 있습니다.

관련 문제