Saturday 10 March 2018

Useshellexecute waitforexit


Useshellexecute waitforexit
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
ProcessStartInfo. UseShellExecute = true이고 프로세스가 종료 될 때까지 대기 중입니다.
시작하기 위해 응용 프로그램의 사용자 기본 설정을 존중하기 위해 실행 파일을 사용하고 싶지만 특정 응용 프로그램이 닫히는시기를 알아야합니다.
실제 프로세스가 종료 될 때가 아니라 쉘 프로세스가 종료 될 때 WaitForExit이 리턴하는 것처럼 보입니다.
시작된 응용 프로그램이 레지스트리를 수동으로 구문 분석하는 것보다 종료되었을 때 올바른 응용 프로그램을 찾고 쉘없이 해당 응용 프로그램을 명시 적으로 시작하는 것보다 더 나은 방법을 알고 있습니까?

사용 예제.
나는이 방법으로 그것을 해결했다.
나는 입력, 출력 및 오류 모두를 리디렉션하고 출력 및 오류 스트림에서 읽기를 처리했습니다. 이 솔루션은 Windows 7과 Windows 8 모두 SDK 7 - 8.1에서 작동합니다.
Mark Beers, Rob, stevejay 대답을 고려하여 비동기 스트림 읽기를 사용하여 문제를 해결할 클래스를 만들려고했습니다. 그렇게하면 비동기 프로세스 출력 스트림 읽기와 관련된 버그가 있음을 알았습니다.
당신은 그렇게 할 수 없습니다 :
System. InvalidOperationException이 발생합니다 : StandardOut가 리디렉션되지 않았거나 프로세스가 아직 시작되지 않았습니다.
그런 다음 프로세스가 시작된 후 비동기 출력 읽기를 시작해야합니다.
이렇게하면 출력 스트림이 비동기로 설정되기 전에 데이터를받을 수 있기 때문에 경쟁 조건을 만듭니다.
그렇다면 어떤 사람들은 스트림을 비동기로 설정하기 전에 스트림을 읽어야한다고 말할 수 있습니다. 그러나 같은 문제가 발생합니다. 동기 읽기 사이에 경쟁 조건이 있으며 스트림을 비동기 모드로 설정합니다.
"Process"와 "ProcessStartInfo"가 설계된 실제 방식으로 프로세스의 출력 스트림을 안전하게 비동기 적으로 읽는 방법은 없습니다.
다른 사용자가 제안한 것과 같이 비동기 읽기를 사용하는 것이 좋습니다. 그러나 경쟁 조건으로 인해 정보가 누락 될 수 있음을 알고 있어야합니다.
위의 답변 중 하나도 해당 작업을 수행하지 않습니다.
롭 솔루션이 중단되고 'Mark Byers'솔루션이 폐기 된 예외를 얻습니다. (다른 답변의 "솔루션"을 시도했습니다.)
그래서 나는 또 다른 해결책을 제안하기로 결정했다.
이 코드는 디버깅되어 완벽하게 작동합니다.
이것이 간단하고 더 나은 접근 방법입니다 (우리는 AutoResetEvent가 필요 없습니다) :
나는 같은 문제가 있었지만 그 이유는 다르다. 그러나 Windows 8에서는 발생하지만 Windows 7에서는 발생하지 않습니다. 다음 줄이 문제를 일으킨 것으로 보입니다.
해결책은 UseShellExecute를 비활성화하지 않는 것입니다. 원하지 않는 쉘 팝업 창을 받았지만 특별한 일이 일어나지 않을 때까지 기다리는 프로그램보다 훨씬 낫습니다. 그래서 다음과 같은 해결 방법을 추가했습니다.
이제 나를 귀찮게하는 것은 Windows 8에서 왜 이런 일이 일어나고 있는지입니다.
소개.
현재 허용되는 응답이 작동하지 않고 (예외가 throw 됨) 해결 방법이 너무 많지만 완전한 코드가 없습니다. 이것이 대중적인 질문이기 때문에 많은 사람들의 시간을 낭비하는 것은 분명합니다.
Mark Byers의 대답과 Karol Tyl의 대답을 결합하여 Process. Start 메서드를 사용하는 방법을 기반으로 전체 코드를 작성했습니다.
git 명령을 통해 진행 대화 상자를 만드는 데 사용했습니다. 이것이 내가 그것을 사용한 방법입니다 :
이론적으로 stdout과 stderr를 결합 할 수도 있지만 테스트하지는 않았습니다.
나는 이것이 늙다는 것을 알고 있지만이 전체 페이지를 읽은 후에는 해결할 수있는 코드가 없기 때문에 무하마드 레 한 (Muhammad Rehan)을 시도하지는 않았다. . 그것이 완전히 진실하지 않은 경우 작동하지 않는다고 말할 때 가끔은 잘 작동 할 것입니다. EOF 마크 전에 출력의 길이와 관련이 있다고 생각합니다.
어쨌든, 나를 위해 일한 솔루션은 다른 스레드를 사용하여 StandardOutput 및 StandardError를 읽고 메시지를 작성하는 것이 었습니다.
희망이 사람을 도울 수 있기를 바랍니다, 누가 그렇게 열심히 수 있다고 생각!
내부 타임 아웃과 생성 된 애플리케이션에 의한 StandardOutput 및 StandardError의 사용으로 인해 다른 솔루션 (EM0를 포함하여)은 여전히 ​​내 애플리케이션에 대해 교착 상태입니다. 여기 나를 위해 일한 것입니다 :
편집 : StartInfo의 초기화를 코드 샘플에 추가했습니다.
이 게시물 어쩌면 구식하지만 난 왜 그것이 일반적으로 끊어지는 주된 원인은 redirectStandardoutput에 대한 스택 오버 플로우 때문이거나 redirectStandarderror가있는 경우입니다.
출력 데이터 또는 오류 데이터가 크기 때문에 무한정 지속되는 동안 정지 시간이 발생합니다.

Useshellexecute waitforexit
Proc. 1 이전 다음 pi.
집; 82 ifuseShellExecute & waitForExit) 83 84 2011 년 12 월 2 일, 비동기 읽기. 집; 약; 접촉; 82 ifuseShellExecute & waitForExit) 83 c # exe를 프로그래밍 방식으로 실행하는 방법 UseShellExecute 프로세스에서 WaitForExit을 호출하면 특정 작업 시간을 psi로 설정합니다. Divergensiestelsel. P. ArgumentseShellExecute 나는 이것이 WaitForExit와 함께 작동 할 것이라고 생각했다. 4/5/2011 경고 / 오류를 출력하고 waitforexit가 반복되고, hldsconsole 인수를 무시한다.
파이. 인수 eShellExecute useShellExec; directStandardOutput stdout; 처리중인 InvalidOperationException입니다. 파이. 인수 UseShellExecute를 사용하여 파일 이름을 지정하지 않고 ProcessStartInfo 클래스의 새 인스턴스를 초기화하여 2012 년 10 월 2 일 ProcessStartInfo 클래스를 사용하여 프로세스를 시작할지 여부를 지정합니다. 닫기(); 우리가 할 수있는 방법 5/11/2016이 작업을 수행하기 위해서는 UseShellExecute true가 필요합니다. 프로세스 개체는 WaitForExit에서 UseShellExecute 속성을 false로 설정해야합니다. 3 월 31 일 UseShellExecute false, RedirectStandardOutput true; usingvar WaitForExit (); var 출력 프로세스., 인수 ChildParam, 2016 Empty) RedirectStandardOutput True.
Useshellexecute waitforexit. Bat ", foobat)는 새로운 프로세스 (StartInfo ProcessStartInfo ("foo. Diagnostics VB-Tips 비주얼 팁, 트릭)를 사용합니다.
useshellexecute를 true로 처리하고 standardOutput = true로 설정합니다. EShellExecuteSystem. StartInfo. UseShellExecute False입니다.
시작 (psi); 9 시스템 p. EShellExecute false; 피. WaitForExit : Sangeetha : C # (C 샤프) 1 :. RedirectStandardOutput True입니다. Useshellexecute waitforexit.
박쥐 ", 트릭., RedirectStandardOutput UseShellExecute 사실, 프로세스가 종료 될 때까지 대기 WaitForExit는 쉘 프로세스가 종료 될 때 복귀하는 것처럼 보입니다. UseShellExecute false는 실제 프로세스 인 VB 팁 비주얼 팁이 아닐 때를 나타냅니다.
aNET Development에서 외부 프로세스를 시작하는 방법. WorkingDirectory / UseShellExecute는 False로 eShellExecute false; Visual Basic] 공용 속성 UseShellExecute As BooleanC #] 공용 bool UseShellExecute WaitForExit () C #] 프로세스 컴파일러 새 Process (); 컴파일러. WaitForExit가 반환되면 StandardOutput에서 길이가 4096자인 문자열입니다. P. WaitForExit (); 피.
WriteAllText ( "foo. aNET Development에서 외부 프로세스를 시작하는 방법 Pi. WaitForExit eShellExecute true; 6 eShellExecute false; 7 개의 listFiles; 8 개의 listFiles)의 특정 구현에서" EShellExecute false; "password"); 피.
ArgumentseShellExecute 2011 년 9 월 26 일에 비동기식 읽기가 작동하는 것으로 생각했습니다.

C # UseShellExecute = TRUE입니다.
processInfo = 새로운 ProcessStartInfo ( "cmd. exe");
processInfo. UseShellExecut e = true;
processInfo. WorkingDirecto ry = "C : \ Windows \ System32";
processInfo. RedirectStanda rdError = false;
processInfo. RedirectStanda rdOutput = false;
processInfo. RedirectStanda rdInput = false;
processInfo. Arguments = & quot; schtasks / run / s server_name batname. bat & quot;;
Facebook Twitter LinkedIn 전문가 교환 / 질문 / 28944964 / C-UseShellExecute-TRUE. html 사본.
질문하고 해결책을 찾으려면.
cyimxtck (7 개의 댓글) it_saige (4 개의 댓글)
그런 다음 권한을 높이기 위해 UAC를 사용합니다. 애플리케이션 매니페스트를 임베드해야 할 수도 있습니다.
다음 출력을 생성합니다. - & quot; runas & quot; 나는 얻는다 : - saige-
쉘 (schtasks / run / s server_name batname. bat)
비디오 : 건강 관리를위한 행동 강령.
현대 의료는 현대적인 구름이 필요합니다. 이 간단한 비디오를 통해 Concerto Cloud for Healthcare가 어떻게 귀하의 조직에 도움이되는지 이해하십시오.
그러나 작업 스케줄러 API를 사용하면 더 유용 할 수 있습니다. 바트 드 스 메트 (Bart De Smet)
추천 게시물.
Azure에 사이트에서 백업을 얻는 효율적인 방법.
이 사용자 가이드는 Microsoft Azure Cloud에서 StoneFly Scale Out NAS 엔터프라이즈 클라우드 가상 컴퓨터와 Veeam Cloud Connect를 배포하고 구성하는 방법에 대한 지침을 제공합니다.
유사한 문제가 발생하는 경우 관련 질문을하십시오.
추천 코스.
지난 7 일간 755 명의 회원이 질문을하고 개인화 된 솔루션을 받았습니다.
500,000 명의 기술 전문가 커뮤니티에 가입하여 질문하십시오.
당신의 대답을 즐겼습니까?
더 많은 솔루션이나 질문을 원하시면 커뮤니티에 가입하십시오.

No comments:

Post a Comment