프로세스 대기 포리스트가 작동하지 않습니다


Process. waitforexit가 작동하지 않습니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
WaitForExit ()이 왜 기다리지 않습니까?
VS2008 설치 프로젝트 (MSI 설치 관리자)에 사용자 지정 동작을 추가하고 있습니다.
배치 파일을 호출하여 데이터베이스를 만들고 그 파일을 삭제하려고합니다. 나는 WaitForExit ()을 가지고 있지만 기다리지 않을 것이다. 왜?
startInfo. UseShellExecute = true와의 차이점이 없습니다. 이 배치는 사용자 입력이 필요하고 질문에 y 및 n을 입력해야하기 때문에 문제없이 실행되었습니다. 그 삭제 작업은 입력 전에 발생했습니다. 배치 파일의 끝에는 일시 중지가 있습니다. 배치 파일의 처리 과정을 볼 수 있습니다.
편집 : 나는 10 번 이상 테스트, 그것은 작동하지 않았다. 점심을 먹은 후, 나는 한 번 더 waitForExit과 while 루프를 HasExited 체크와 함께 넣는다. while 루프 안에서 잠을 자게됩니다. 나는 그것이 효과가 있다는 것을 발견했다. 그런 다음 추가 코드를 하나의 WaitForExit으로 삭제했습니다. 지금 일하는 것 같습니다.

Process. waitforexit가 작동하지 않습니다.
System. Diagnostics. Process. Start ()를 사용하여 파일을 실행하고. WaitForExit ()을 사용하여 프로세스가 완료 될 때까지 기다립니다.
그런 다음 File. Delete (파일 이름)을 사용하여 실행 파일을 삭제합니다.
이것은 내가 어떻게 든, 프로세스가 여전히 살아 있고. WaitForExit () 호출이 반환 된 후에도 실행 파일을 잠그고 있다고 믿게한다.
왜 이런 일이 일어 났는지에 대한 아이디어가 있고 (코드에 퍼팅하는 것 이외에) 이것에 대한 수정이 있다면?
Samuel Stanojevic 님의 답변으로 표시 2010 년 1 월 8 일 금요일 4:20 PM Tergiver 작성자 2010 년 1 월 8 일 금요일 4:20 PM bool, 무한 루프 수정으로 변경되었습니다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.

Process. waitforexit가 작동하지 않습니다.
필자가 작성한 응용 프로그램에서 다음을 수행해야합니다.
외부 GUI 응용 프로그램을 실행하십시오 (이 예제에서는 MS Word라고 가정합니다). 외부 GUI 응용 프로그램이 닫힐 때까지 현재 스레드를 차단하십시오.
이 일을 처음 시도한 것은 System. Diagnostics. Process 개체를 사용하는 것이 었습니다.
// 프로세스 객체를 초기화합니다.
myProcess. StartInfo. FileName = "C : \\ Program Files \\ Microsoft Office \\ OFFICE11 \\ Winword. exe";
myProcess. StartInfo. WorkingDirectory = "C : \\ Program Files \\ Microsoft Office \\ OFFICE11";
// 프로세스를 시작하고 프로세스가 닫힐 때까지 기다립니다.
System. Windows. Forms. MessageBox. Show (& quot; 사용자 응용 프로그램을 닫음 & quot;);
위 코드를 실행하면 MS Word가 예상대로 실행됩니다. 그러나 WaitForExit () 호출은 MS Word 프로세스가 시작된 후 즉시 닫히지 않고 즉시 메시지 상자 팝업을 표시하므로 작업을 수행하지 않는 것처럼 보입니다.
WaitForExit () 호출이 MSWord 프로세스가 종료 될 때까지 기다리지 않는 이유는 무엇입니까? 사실 커맨드 라인 앱이 아닌 GUI 애플리케이션을 출시하고있는 것이 사실입니까?
어떤 도움이라도 대단히 감사하겠습니다.
모든 답장.
몇 가지 테스트를 마친 후에는 사용자 문서가로드되지 않았기 때문에 이것이라고 결론을 냈습니다. 파일 이름 매개 변수를 실제 문서로 만들면 예상대로 작동합니다.
// 프로세스를 시작하고 프로세스가 닫힐 때까지 기다립니다.
System. Windows. Forms. MessageBox. Show (& quot; 사용자 응용 프로그램을 닫음 & quot;);
문서로드 여부는 중요하지 않아야합니다. Process 개체는 프로세스를 실행하고 모니터링하는 일반적인 방법을 제공하기 만하고 Word에서로드 한 내용의 내부에 대해서는 알지 못합니다.
어쨌든 나는 권고 된대로 코드를 시도하고 "이 개체와 관련된 프로세스 없음"예외를 수신합니다. 아마도 실행 파일이 아닌 문서의 파일 이름이 전달되었을 것입니다.
(또한이 특정 문제를 해결하기 위해 Word를 예제로 사용한다는 것을 언급해야합니다. 그래서 Word 자체에서 진행되는 작업에 너무 신경 쓰지 않으려 고합니다. WaitForExit () GUI 응용 프로그램의 다양한.)
OK, 방금 집에 돌아와서 집에있는 PC에서이 코드를 사용해 보았습니다. 왜 내 노트북에서 문제를 일으키는 지 잘 모르겠습니다.
어쨌든 DMan을 도와 주셔서 감사합니다.
Brad Mathews의 답변으로 2008 년 12 월 19 일 금요일 오전 12:55에 제안되었습니다.
objProcess As New System. Diagnostics. ProcessStartInfo ( "Winword. exe", "/ t c : \ mydoc. doc")
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.

Process. waitforexit가 작동하지 않습니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
WaitforExit이 제대로 작동하지 않습니다.
그래서 나는 잠시 동안이 문제에 대해 싸워 왔으며 그것을 해결하기위한 여러 가지 방법을 시도했지만 그렇게 할 수는 없었습니다.
Bascally waht 내 애플 리케이션은 자바 파일을 호출하여 디바이스에 애플리케이션을로드한다. 로드하는 동안 그것을 richtext 상자에 인쇄하고, 다음 파일로 이동하고 싶습니다. 내가 겪고있는 문제는 첫 번째 파일이로드되는 동안 2 번째 문제를로드하려고 시도한다는 것입니다. 나가기를 기다렸지 만 그렇게하면 출력 데이터가 서식있는 텍스트 상자에 쓰여지지 않습니다. 어떤 아이디어?
나는 여러 다른 장소에서 출구 기다림을 시도했지만 작동하지 않는 것 같습니다.
아래의 두 가지 방법은 stdout 또는 error를 richtext 필드에 씁니다.
어떤 아이디어라도 좋을 것입니다. Bascally 끝내려면 프로세스가 필요하므로 forloop이 다음 파일을로드하는 것으로 계속 생각할 수 있습니다.
WaitForExit을 사용하면 프로세스가 종료 될 때까지 응용 프로그램이 대기 (대기)합니다. 이는 UI 스레드에서 Windows 메시지를 처리 ​​할 수 ​​없으므로 UI를 업데이트하지 않음을 의미합니다.
"백그라운드에서"프로세스를 시작해야 UI가 계속 새로 고침됩니다. 이 작업은 다음을 사용하여 수행 할 수 있습니다.
별도의 스레드에서 프로세스를 시작하고 모니터하고 진행 상황 정보를 UI 스레드로 다시 전달하여 표시합니다. 프로세스 처리 이벤트에 이벤트 처리기를 추가하거나 프로세스를 주기적으로 폴링합니다. HasExited 플래그를 사용하여 첫 번째 프로세스의 상태를 확인합니다 끝마친. 이벤트 처리기는이 프로세스를 시작한 다음 기본 응용 프로그램 루프로 다시 나가서 외부 프로세스가 완료 될 때까지 기다리는 동안 정상적으로 실행되도록합니다.
완료 될 때까지 바쁜 대기 루프에 앉아 애플리케이션 이벤트를 처리하십시오. (이 코드에 대한 재 호출 호출을 유발하는 모든 이벤트는 매우 나쁜 작업을 수행 할 수 있으므로 일반적으로이 방법을 사용하면 나머지 응용 프로그램을 알고있는 상태에서 "잠겨"있는지 확인해야합니다 프로세스가 완료되기를 기다리는 중입니다). 이것은 효과적으로 WaitForExit이하는 일이지만 응용 프로그램 이벤트도 처리하므로 UI가 막연하게 응답 할 수 있습니다.
나는 여기에서 완전히 틀릴지도 모른다.
-jar 뒤에 공백이 있어야합니다.
그렇지 않으면 Java가 즉시 폭탄을 터뜨릴 것입니다.
UI 스레드에서 WaitForExit 호출을 이동하는 중입니다.
M. Babcock이 언급했듯이, 당신은 서식있는 텍스트 상자에 대한 업데이트를 기다리고 있습니다.
이와 비슷한 해결책이 효과적 일 수 있습니다.
목록을 처리하는 새 스레드를 시작하려면 btnLoad_Click을 수정하십시오 (count> 0 브랜치에 있음).

Comments

Popular posts from this blog

르 메이에르 중개인 forex en ligne

스톡 옵션 마진

스톡 옵션에 대한 주세 원천 징수