Ok exe를 트리거하는 샘플 웹 사이트 (Site.aspx)를 만들었습니다. exe를 실행할 수있었습니다. 내가 EXE 파일을 실행할 때마다 그래서 내가지고있어 문제가 .. 경고 메시지는 즉시 팝업됩니다 프로세스가 아직 이것은 EXE입니다C# Process.HasExited always always true
protected void Button1_Click(object sender, EventArgs e)
{
string run = @"C:\Documents and Settings\blabla\Desktop\Test\Test.exe";
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = run;
start.UseShellExecute = false;
Process proc;
proc = Process.Start(start);
while (!proc.HasExited)
{
}
proc.WaitForExit();
Response.Write("<script>alert('done')</script>");
}
확인을 완료되지 않은 경우에도 proc.HasExited 및 proc.WaitForExit을 우회 IM 실행
TEST.EXE
static void Main(string[] args)
{
int i = 0;
while (i < 5)
{
Console.Write("While statement ");
// Write the index to the screen.
Console.WriteLine(i);
// Increment the variable.
i++;
Thread.Sleep(2000);
}
}
는 오류가 없습니다. 단추를 클릭하여 exe를 실행할 수 있었지만 exe가 끝날 때까지 기다리는 대신 다른 코드로 바로갑니다.
빈 catch 블록이 있다는 사실은 잘못된 것을 진단하는 것을 매우 어렵게 만듭니다. 예외가 즉시 던져 질 수도 있지만, 당신은 그것을 보지 않을 것입니다. * 절대로 이런 예외를 삼가십시오. –
전에 예외를 넣으려고했으나 버튼을 클릭하면 finally 블록으로 곧바로 이동합니다. – zxc
그게 무슨 뜻인지는 분명하지 않지만 try/catch/finally 블록을 완전히 제거하는 것이 좋습니다. 예외를 일으켜 버리십시오. 그것은 코드의 크기를 엄청나게 줄여서 무슨 일이 일어나는지 훨씬 더 명확하게 해줄 것입니다. 꽉 짜여진 루프도 나쁜 아이디어입니다. - 'WaitForExit'은 당신이 원하는 것입니다. 내 생각 엔 적절한 권한이나 비슷한 것을 가지고 있지 않기 때문에 setup.exe가 빠져 나가고있는 것 같지만 진단하기에는 다른 것입니다. –