Saturday 10 March 2018

C # 프로세스 waitforexit 대기하지 않음


C # process. waitforexit 대기하지 않음
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
프로세스가 끝날 때까지 기다리십시오.
나는 그 응용이있다.
다른 응용 프로그램 'ABC'를 시작하십시오. 해당 신청서가 끝날 때까지 기다려서 (프로세스가 종료 됨) 내 실행을 계속 진행하고 싶습니다. 내가 어떻게 해?
동시에 실행되는 'ABC'응용 프로그램의 인스턴스가 여러 개있을 수 있습니다.
나는 당신이 단지 이것을 원한다고 생각한다.
메서드에 대한 MSDN 페이지를 참조하십시오. 또한 시간 초과를 지정할 수있는 오버로드가 있으므로 영원히 기다리지 않아도됩니다.
Process. WaitForExit을 사용 하시겠습니까? 또는 차단하지 않으려면 Process. Exited 이벤트에 가입하십시오. 그것이 원하는 것을하지 않는다면, 우리에게 당신의 요구 사항에 대한 더 많은 정보를주십시오.
내 신청서에서 다음을 수행합니다.
유용 할 수있는 몇 가지 추가 기능이 있습니다.
exit를 기다리거나 HasExited 속성을 catch하고 UI를 업데이트하여 사용자에게 "정보 제공"(기대 관리)을 유지할 수 있습니다.

C # process. waitforexit 대기하지 않음
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
대기 WaitForExit 처리하지 않습니다.
pdf를 비동기 적으로 인쇄하기 위해 Print spooler 응용 프로그램을 만들었습니다.
(응용 프로그램은 네트워크 프린터에서 veryPDF 명령을 사용하여 인쇄합니다)
그러나 그것은 WaitForExit 코드에서 기다리지 않았습니다. 내 문서가 프린터 대기열에 있더라도 실행 (여기 // 일부 내용)을 수행했습니다.
인쇄가 완료되었을 때이를 알리는 다른 방법이 있습니까?
코드는 cmd. exe가 완료 될 때까지 기다립니다. 아마 pdfprint. exe를 하위 프로세스로 시작한 직후에 종료됩니다. 하는거 어때.
pdfprint. exe를 직접 시작하십시오 (어쨌든 Windows 명령 줄이 필요한 이유는 무엇입니까?) 또는 하위 프로세스의 프로세스 개체를 찾으십시오. 여기에 설명 된대로 WMI를 통해 - 그 프로세스가 대신 종료 될 때까지 기다립니다.
그러나 pdfprint. exe가 예약 된 인쇄 작업이 실제로 완료되기를 기다리는 경우에만 두 가지 접근 방식이 모두 작동합니다. 나는 도구를 모른다. 그래서 그것이 그 방법으로 행동하는지 모르겠다. 그렇지 않다면 인쇄 대기열에 액세스해야합니다. 인쇄 대기열은 Hans의 의견에서 지적한대로 권장되지 않습니다.
If-Everything-Else-Fails 접근법을 사용할 수 있습니다 (pdfprint. exe가 종료 될 때까지 기다리지 않는 경우). 못 생겼지 만 작동 할거야.
대상 파일이 존재할 때까지 while 루프를 입력하십시오 (pdfprint. exe가 문제를 일으키고 파일을 생성하지 않을 경우를 대비하여 시간 제한이있는 것이 이상적입니다). 두 번째 while 루프를 입력하십시오. 여기서 각 X 밀리 초 (예 : 500? 1000?), it 출력 PDF의 파일 길이를 확인합니다. 검사하는 동안 파일 크기가 같으면 출력 프로세스가 완료된 것으로 가정하고 파일 작업을 시작합니다.
내가 말했듯이, 그것은 귀엽지 않습니다. 당신은 의지가 없으면 그것을 사용해서는 안됩니다. 그러나 그것은 일을 끝낸다. 필자는 네트워크를 통해 복사되는 들어오는 파일을 처리하기 위해 이런 종류의 접근 방식을 사용해야했습니다 (들어오는 파일을 처리해야하지만 파일을 만지기 전에 복사가 완료되었음을 알아야합니다. 왜냐하면 PDF가 잠길 것이기 때문입니다 파일을 열면 파일 복사가 실패합니다.)

C # process. waitforexit 대기하지 않음
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
WaitForExit 기다리지 않습니다.
다음 코드가 있고 WaitForExit 메서드가 대기 중이 아닙니다. 명령을 실행하고 다음 명령문으로 넘어갑니다. 이 명령은 응용 프로그램의 설치를 해제하고 parms는 설치 제거 명령을위한 것입니다. 제거가 잘 실행되지만 계속 진행하기 전에 제거가 필요합니다. 그것은 방해하지 않습니다.
Andrey의 의견이 옳다는 점을 강력하게 의심합니다. 시작하려는 프로세스가 종료되었지만 새로운 프로세스 자체를 시작했습니다.
그것을 알아내는 간단한 방법은 process. Id를 호출하기 전에 WaitForExit을 호출 한 다음 작업 관리자에서 해당 프로세스를 찾으십시오. 나는 네가 거기 있지 않을 것이라고 생각할 것이다.
특정 파일이나 레지스트리 항목이 제거되는 것과 같이 제거가 완료되었음을 나타내는 다른 표시기를 기다리는 동안 잠깐 잠을 자다가 반복 할 수 있습니다. 이상적은 아니지만 당신이 가진 최고일지도 모릅니다.

C # process. waitforexit 대기하지 않음
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
waitForExit () 프로세스가 작동하지 않습니다.
다음 코드가 있습니다.
파일을 추출한 후 창을 닫지 않으려합니다 (unRAR. exe가 파일을 추출 함). WaitForExit (9000)이 작동하지 않는 것 같습니다. 수십 개의 사이트를 읽고 여전히 해결책을 찾을 수 없습니다.
msdn. microsoft/en-us/library/fb4aw7b8.aspx이 문서를 읽으면 WaitForExit ()이 프로그램을 활성 상태로 유지하지 않고 관련 프로그램이 종료 될 때까지 대기한다는 것을 알 수 있습니다. 관련 프로그램 (여기서 unzip. exe)이 종료되면 unzip. exe 프로그램을 종료 할 수 없습니다.
Process. WaitForExit을 사용하면 응용 프로그램이 다른 프로세스가 종료 될 때까지 기다릴 수 있습니다. 시작된 프로세스 자체에는 전혀 영향을 미치지 않습니다.
bat 파일을 생성하고 거기에 명령을 삽입하여 기다리십시오 (명령 시간 초과 또는 스레드에서 다른 솔루션을 사용하여 배치 파일에서 잠자기).

No comments:

Post a Comment