Waitforexit cmd
대기업 cmd
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
명령 줄을 통해 명령을 실행하고 완료 될 때까지 기다리는 방법.
명령 줄을 통해 명령을 실행하려고하고 있는데, 이전 명령의 결과에 의존하는 다른 명령 (cmd가 아닌)을 실행하려고합니다. 문제는 첫 번째 명령이 끝나는 데 약 2 분이 걸리고 두 번째 명령은 첫 번째 명령이 끝날 때까지 "대기"하지 않는다는 것입니다. 첫 번째 끝날 때까지 두 번째 명령을 대기하려면 어떻게합니까?
미리 감사드립니다!
WaitForExit ()을 사용할 수 있습니다.
연결된 프로세스가 종료 될 때까지 지정된 밀리 초 동안 대기하려면 WaitForExit (int milliseconds). WaitForExit ()은 관련 프로세스가 종료 될 때까지 무기한 대기합니다.
프로세스 구성 요소가 관련 프로세스가 종료 될 때까지 무기한 대기하도록 지시합니다.
WaitForExit () 사용하기; 프로세스는 다른 사람들이 말한 것처럼 최선일 것입니다.
명령을 종료하거나 권고대로 무기한으로 밀리 초 단위로 시간을 지정하십시오.
대기업 cmd
그렇지 않으면 내 스레드를 실행합니다 기다려 휴식을 취할 수있는 대안.
별도의 함수로 저장하고 전역 변수로 제어 할 수 있습니다.
이유 - 콘솔 응용 프로그램을 실행하는 CMD. EXE 스레드입니다.
스레드를 실행하기 전에 취소해야합니다.
다음은 우리가 가지고있는 것입니다 :
ProcessStartInfo psi = new.
hbProc = 새 프로세스 ();
& gt; 음, 다음을 사용할 수 있습니다.
hbProc. Exited + = 새 EventHandler (functionToCallAfterProces *** it);
// 다른 스레드 - 이벤트를 취소하려는 경우 :
hbProc - = 새로운 EventHandler (functionToCallAfterProces *** it);
프로세스가 종료되고 대기를 취소하려는 욕구.
& gt; 얼마나 영속적입니까? WaitForExit (); ? 나는 거기에 / an이 있다는 것을 의미한다.
& gt; 그렇지 않으면 내 스레드를 실행합니다 기다려 휴식을 취할 수있는 대안.
& gt; 별도의 함수로 저장하고 전역 변수로 제어 할 수 있습니다.
& gt; 이유 - 콘솔 응용 프로그램을 실행하는 CMD. EXE 스레드입니다.
& gt; 스레드를 실행하기 전에 취소해야합니다.
& gt; 다음은 우리가 가지고있는 것입니다 :
& gt; ProcessStartInfo psi = new.
& gt; hbProc = 새 프로세스 ();
시간 초과 bool을 지정할 수있는 과부하 WaitForExit (int.
msToWait). 별도의 스레드에서 실행하고 죽이면됩니다.
중단 된 예외가 발생합니다. 그걸 확인하고 싶을 수도 있습니다.
시작한 프로세스가 아직 실행 중이 지 않은 경우 (종료 된 경우).
& gt; WaitForExit ()을 실행하는 스레드를 종료하거나.
& gt; 시간 초과 bool을 지정할 수있는 과부하 WaitForExit (int.
& gt; msToWait). 별도의 스레드에서 실행하고 죽이면됩니다.
& gt; 중단 된 예외가 발생합니다. 그걸 확인하고 싶을 수도 있습니다.
& gt; 시작한 프로세스가 아직 실행 중이 지 않은 경우 (종료 된 경우).
대기업 cmd
NetCF2.0에서 다음 코드를 사용하여 다른 CF 응용 프로그램을 시작하면 응용 프로그램이 종료되지 않고 중단됩니다.
Dim p로 새 프로세스.
Dim info 새로운 ProcessStartInfo ( "Sync. exe", "1")로서,
앱을 수동으로 실행하거나 단계별로 실행하면 예상대로 종료됩니다. WaitForExit이 살아있는 것과 거의 같습니다.
타사 구성 요소를 사용하지 않는 신뢰할 수있는 repro가 있으면 여기에 버그 보고서를 제출하십시오.
모든 답장.
아니요, WaitForExit ()은 응용 프로그램이 종료 될 때까지 기다리지 만 계속 살아 있지 않습니다. 주 응용 프로그램에 의해 시작된 경우 종료되지 않는 Sync. exe의 내용이어야합니다. Sync. exe는 주요 응용 프로그램이 보유한 리소스를 기다릴 수도 있습니다. 조사하는 것은 사용자의 몫입니다.
네, 좀 더 파헤쳐 야겠네.
한 단추가있는 폼에서 샘플 프로그램을 작성했습니다. 단추를 클릭하면 Sync. exe가 실행되고 WaitForExit ()이 호출되면 모든 것이 정상적으로 작동했습니다. 혼란스러워 !!
Sync. exe를 호출하는 코드가 별도의 스레드에있을 수도 있다는 사실과 관련이있을 수 있습니다. 나는 대답을 찾을 때 다시 게시 할 것이다!
이 대기열은 Sync. exe에서 기본 호출 응용 프로그램으로 기본 메시지를 전송하기 위해 IPC에 사용됩니다. 이 메시지는 기본 문자열이며 일반적으로 한 문자 "c"입니다. 완전을 위해, "e" 에러 "u" 사용 가능한 소프트웨어 업그레이드 등
나는 Sync. exe 응용 프로그램을 호출하기 바로 전에 대기열을 만들고 Sync. exe를 닫으면 메인 응용 프로그램을 닫을 때 Sync. exe가 살아있는 것처럼 보입니다.
이 구현은 CE 4.2 장치에서 제대로 작동하지만 여기에있는 WM5 장치에서는 작동하지 않습니다.
WM5에 대한 코드를 수정하는 방법에 대한 아이디어가 있습니까? 아니면 MSMQ를 사용하거나 비슷한 것을 고려해야합니까?
좋아, 누군가가 이것을 읽고 있다면 .. 지금까지의 이야기.
OpenNetCF. WindowsCE. Messaging. P2PMessageQueue를 사용하기 위해 메시지 대기열 코드를 변경했지만 여전히 동일한 문제가 있습니다. 문제는 호출 응용 프로그램이 명명 된 대기열을 연 다음 두 번째 응용 프로그램을 프로세스로 시작하고 WaitForExit을 호출 할 때 발생합니다. 두 번째 응용 프로그램은 동일한 이름의 대기열을 열고 호출하는 응용 프로그램에 의해 수신되는 메시지를 보냅니다. 그러나 두 번째 응용 프로그램이 끝나면 실제로 종료되지 않으므로 WaitForExit이 호출 응용 프로그램을 잠글 수 있습니다. 호출 응용 프로그램을 중지하면 두 응용 프로그램이 닫힙니다.
두 응용 프로그램에서 동일한 명명 된 대기열을 사용하는 경우에만 발생합니다. 대기열을 통해 서로 연결된 것처럼 보입니까? 이 모든 것은 PPC2003과 CE4.2에서 잘 돌아 갔지만 WM5.0에서는 정말 두통을 겪고 있습니다! 도움!!
타사 구성 요소를 사용하지 않는 신뢰할 수있는 repro가 있으면 여기에 버그 보고서를 제출하십시오.
& quot; 시간 초과 & quot; 매개 변수. 다음은 C # 정적 함수입니다. cmd. exe를 사용하여 프로세스를 시작합니다.
공공 정적 int ExecuteCommand (문자열 명령, int 시간 초과)
ProcessInfo = 새로운 ProcessStartInfo ( "cmd. exe", "/ C"+ Command);
프로세스 = 프로세스. Start (ProcessInfo);
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
대기업 cmd
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
C #을 사용하여 CMD에서 Exitcode 얻기
나는 다음 코드를 사용하여 PATH, EXECUTABLE NAME 및 ARGUMENTS를 배치 파일에 작성하고 C #을 사용하여 CMD를 통해 실행합니다. 문제는 배치 파일을 실행 한 후 애플리케이션 dosent가 시작되는 경우입니다. 그리고 C # 코드는 나에게 예외 나 알림을줍니다.
어떤 명령이 제대로 실행되었는지 확인하기 위해 CMD에서 Exitcode를 얻고 싶습니다. 종료 코드는 어떻게 결정합니까?
Batchfile 내부 스크립트 : [Notepads. exe가 오류를 얻는 데는 잘못되었습니다.]
""% ERRORLEVEL % "=="1 "종료 / B 1"
일괄 처리 스크립트 레이어를 사용하고 있기 때문에 일부 컨트롤을 잃어 버리기 때문에 나중에 실행하는 배치 파일을 만드는 대신 프로세스를 직접 실행하는 것이 훨씬 쉽습니다.
이 코드를 대신 사용하십시오.
나는 많은 프로젝트에서 그것을 사용하고 그것은 매력처럼 작동합니다.
배치 스크립트 경로를 사용해야하는 경우 배치 스크립트가 exitcode를 올바르게 설정했는지 확인하십시오.
Process. ExitCode 속성이 원하는 것을 제공하지 않습니까? 분명히 배치 파일 자체가 올바른 종료 코드로 종료되고 실행중인 응용 프로그램을 미러링해야합니다.
그런데 using 문을 사용하여 예외가 발생하더라도 관련 스트림이 모두 닫혀 있는지 확인해야합니다. 동기 IO 대신 애플리케이션의 데이터에 비동기로 반응하는 방법을 제안합니다. 동기 입출력을 고수한다면 표준 오류에서 다른 스레드가 읽어야합니다. 그렇지 않으면 프로세스가 많은 양의 데이터를 표준 오류에 쓰면 버퍼를 지우는 것을 기다리는 블록이 생깁니다.
No comments:
Post a Comment