C # 프로세스 waitforexit 예외
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
왜 Process. WaitForExit가 "no process"를 던지겠습니까? 프로세스가 존재하는 경우에도 예외가 발생합니까?
이 코드가 포함 된 Windows 서비스가 있습니다.
이 코드의 목적은 문서에서 IFilter 추출물을 실행하는 것입니다. 일부 IFilter는 비정상적으로 벗겨지기 때문에 별도의 프로세스를 사용합니다.
이제이 코드는 Windows 7 및 Server 2008 R2 상자에서 완벽하게 실행되지만 Windows Server 2003에서는 WaitForExit이 "이 프로세스 개체와 연결된 프로세스가 없습니다."예외를 즉시 throw합니다. 프로세스가 존재하고 문제없이 작업을 완료합니다.
이걸 본 사람? WaitForExit이 왜이 오류를 발생시키는 지에 대해 누구나 알 수 있습니까?
이 코드를 콘솔 응용 프로그램에 배치하고 Windws Server 2003 상자에서도 제대로 실행하면 Windows Server 2003 상자의 Service에서이 문제를 실행하는 특정 문제 인 것처럼 보입니다.
프로세스를 시작할 때 System. Diagnostics. Process 클래스를 사용하면 시스템에서 CreateProcess 또는 ShellExecuteEx Win32 함수를 사용할 수 있습니다. CreateProcess를 사용하면 실행 파일 만 시작할 수 있습니다. ShellExecuteEx를 사용할 때, 쉘에서 "시작 -> 실행"명령을 사용하여 시작할 수있는 모든 파일.
그러나 이것들은 프로세스를 시작하는 완전히 다른 방법입니다. ShellExecuteEx는 셸을 포함하며, 예를 들어 HKCR \ & lt; progid & gt; \ shell \ & lt; 동사 & gt; 아래에 저장된 정보를 사용하여 Word 나 Excel의 기존 인스턴스를 다시 사용하여 문서를 열 수 있습니다. 레지스트리 키. 예를 들어 DDE를 사용하여 기존 Excel 인스턴스를 검색 한 다음 활성화 할 수 있습니다.
ShellExecuteEx의 SHELLEXECUTEINFO 문서를 참조하십시오.
ShellExecuteEx는 새 프로세스가 시작되었는지 여부에 따라 hProcess를 반환하거나 반환하지 않을 수 있습니다. 이것은 당신이보고있는 행동입니다.
CreateProcess는 하위 수준의 함수이며 직접 프로세스를 만들고 동일한 인수를 전달합니다. 항상 프로세스 핸들을 반환합니다.
참고 : 실행 파일을 시작한 것으로 보이기 때문에 ShellExecuteEx가 hProcess를 반환하지 않는다는 것이 약간 놀라운 일입니다. 그럼에도 불구하고 프로세스 핸들을 확보하려면 UseShellExecute = false를 사용하는 것이 올바른 작업입니다.
C # 프로세스 waitforexit 예외
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Process. WaitForExit ()은 NullReferenceException을 발생시킵니다.
다음 코드는 NullReferenceException을 발생시킵니다.
디버거를 사용하면 Process. Start가 null을 반환하는 것을 볼 수 있습니다. 그래서 .. 왜 이런 일이 일어나고 있는지에 대한 생각은? 사용자가 시작한 프로세스를 완료 할 때까지 프로그램 실행을 차단하고 싶습니다.
업데이트 :이 코드를 리펙토링 :
이 예외가 발생합니다.
InvalidOperationException :이 개체와 연결된 프로세스가 없습니다.
MSDN에서 Process. Start가 반환됩니다.
프로세스 리소스가 시작되지 않은 경우 (예 : 기존 프로세스가 다시 사용되는 경우) 프로세스 리소스 또는 null 참조 (Visual Basic의 경우 Nothing)과 관련된 새 Process 구성 요소입니다.
귀하의 경우, 실행 파일보다는 Process. Start에 URL을 전달하기 때문에 실제로 새 프로세스를 시작하지는 않습니다. URL을 iexplore 또는 브라우저가 무엇이든간에 전달하고 있습니다. 그래서 당신은 null을 돌려받습니다.
어쨌든 "시작된 프로세스로 사용자가 완료 될 때까지 프로그램 실행을 차단하는 것"은 무엇을 의미합니까? 사용자가 웹 브라우저를 닫을 때까지 기다리시겠습니까? 이 경우 다음과 같은 것이 필요할 수 있습니다.
. 그것은 나를 위해 적절하게 작동합니다. 그러나 브라우저 실행 파일을 지정해야합니다.
C # 프로세스 waitforexit 예외
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
& quot; 프로세스가 종료되었습니다 & quot;가 표시되지 않고 프로세스를 종료하는 방법 예외?
Process. Kill ()을 사용하여 프로세스를 종료합니다. 이렇게 :
그리고 때로는 프로세스가 줄 사이에서 빠져 나오기 때문에 컨트롤이 안에 들어가서 Kill이 예외를 생성합니다.
이제 try-catch로 코드를 래핑하는 것은 다른 이유 때문에 InvalidOperationException을 호출 할 수 있기 때문에 좋은 생각으로 보이지 않습니다.
설명 된 시나리오에서 예외가 발생하지 않고 프로세스를 종료 할 수있는 방법이 있습니까?
당신은 P / Invoke TerminateProcess를 Process. Handle에 넘길 수 있습니다. 그런 다음 수동으로 원인을 평가합니다 (GetLastError ()). 대략 Process. Kill ()이 내부적으로하는 일은 대략적입니다.
그러나 TerminateProcess는 비동기입니다. 따라서 처리가 완료되었는지 프로세스 핸들을 기다려야합니다. Process. Kill ()을 사용하면 해당 작업을 수행합니다.
업데이트 : 수정, Process. Kill () 또한 비동기 적으로 실행됩니다. 따라서 WaitForExit ()을 사용하여 종료가 완료 될 때까지 기다려야합니다.
솔직히, 나는 신경 쓰지 않을 것이다. 물론 어떤 "임의"InvalidOperationExcepion이 더 이상 존재하지 않는 프로세스 또는 유효하지 않은 상태에있는 Process 개체와 관련이없는 코드 줄에서 벗어나기는 항상 (원격?) 가능성이 있습니다. 현실 나는 당신이 단지 죽이기를 시도 / 잡을 수 있다고 생각합니다.
또한 응용 프로그램에 따라 어쨌든이 결과를 기록하는 것을 고려할 수 있습니다. 이는 최후의 수단으로 판단되기 때문입니다. 이 경우 실제 InvalidOperationException을 기록하십시오. 일이 이상 해지면 최소한 킬이 실패한 이유를 확인하기위한 로그를 남기십시오.
위와 같은 이유 때문에 Win32Exception을 포착 / 처리하는 것이 좋습니다.
C # 프로세스 waitforexit 예외
Process. Start () 메서드를 사용하여 다른 Exe를 시작하는 콘솔 응용 프로그램을 만들었습니다. Exe 2에서 예외를 발생 시키면 Exe1을 catch해야합니다. 다음은 내가 작성한 코드입니다.
static void Main (string [] args)
string arguments = string. Empty;
foreach (args의 문자열 strData)
string. Format ( "", arguments, strData);
프로세스 notePad = 새 프로세스 ();
SecureString secure = 새로운 SecureString ();
foreach ( "password"의 char c)
ProcessStartInfo startInfo = 새로운 ProcessStartInfo ();
using (프로세스 exeProcess = Process. Start (startInfo))
string. Format ( "-"LaunchModelCatalogueApp에서 예외 발생 : ", ex. Message), EventLogEntryType. Information);
정적 클래스 프로그램.
static void Main (string [] args)
Exe 2에서 예외가 발생하면 Exe 1을 catch해야합니다. 어떻게해야합니까?
감사합니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
모든 답장.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
예, 이것은 매우 좋은 개념입니다. 이전 프로젝트 중 하나를 적용했습니다. 당신은 예외를 통해해야하고 예외 파생 클래스에서 그것을 잡아야한다. 예를들 수 있습니다. / codecroject / KB / dotnet / unhandledexceptions. aspx 링크를 확인할 수 있습니다.
& ldquo; 답으로 표시 & rdquo;를 클릭하십시오. 이 게시물을 읽는 다른 커뮤니티 회원에게 유용 할 수 있습니다.
KashNetDev 편집자 2012 년 1 월 12 일 목요일 오전 6:26
Adavesh와 Kash에게 감사드립니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Process. WaitForExit ()은 NullReferenceException을 발생시킵니다.
다음 코드는 NullReferenceException을 발생시킵니다.
디버거를 사용하면 Process. Start가 null을 반환하는 것을 볼 수 있습니다. 그래서 .. 왜 이런 일이 일어나고 있는지에 대한 생각은? 사용자가 시작한 프로세스를 완료 할 때까지 프로그램 실행을 차단하고 싶습니다.
업데이트 :이 코드를 리펙토링 :
이 예외가 발생합니다.
InvalidOperationException :이 개체와 연결된 프로세스가 없습니다.
MSDN에서 Process. Start가 반환됩니다.
프로세스 리소스가 시작되지 않은 경우 (예 : 기존 프로세스가 다시 사용되는 경우) 프로세스 리소스 또는 null 참조 (Visual Basic의 경우 Nothing)과 관련된 새 Process 구성 요소입니다.
귀하의 경우, 실행 파일보다는 Process. Start에 URL을 전달하기 때문에 실제로 새 프로세스를 시작하지는 않습니다. URL을 iexplore 또는 브라우저가 무엇이든간에 전달하고 있습니다. 그래서 당신은 null을 돌려받습니다.
어쨌든 "시작된 프로세스로 사용자가 완료 될 때까지 프로그램 실행을 차단하는 것"은 무엇을 의미합니까? 사용자가 웹 브라우저를 닫을 때까지 기다리시겠습니까? 이 경우 다음과 같은 것이 필요할 수 있습니다.
. 그것은 나를 위해 적절하게 작동합니다. 그러나 브라우저 실행 파일을 지정해야합니다.
C # 프로세스 waitforexit 예외
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
& quot; 프로세스가 종료되었습니다 & quot;가 표시되지 않고 프로세스를 종료하는 방법 예외?
Process. Kill ()을 사용하여 프로세스를 종료합니다. 이렇게 :
그리고 때로는 프로세스가 줄 사이에서 빠져 나오기 때문에 컨트롤이 안에 들어가서 Kill이 예외를 생성합니다.
이제 try-catch로 코드를 래핑하는 것은 다른 이유 때문에 InvalidOperationException을 호출 할 수 있기 때문에 좋은 생각으로 보이지 않습니다.
설명 된 시나리오에서 예외가 발생하지 않고 프로세스를 종료 할 수있는 방법이 있습니까?
당신은 P / Invoke TerminateProcess를 Process. Handle에 넘길 수 있습니다. 그런 다음 수동으로 원인을 평가합니다 (GetLastError ()). 대략 Process. Kill ()이 내부적으로하는 일은 대략적입니다.
그러나 TerminateProcess는 비동기입니다. 따라서 처리가 완료되었는지 프로세스 핸들을 기다려야합니다. Process. Kill ()을 사용하면 해당 작업을 수행합니다.
업데이트 : 수정, Process. Kill () 또한 비동기 적으로 실행됩니다. 따라서 WaitForExit ()을 사용하여 종료가 완료 될 때까지 기다려야합니다.
솔직히, 나는 신경 쓰지 않을 것이다. 물론 어떤 "임의"InvalidOperationExcepion이 더 이상 존재하지 않는 프로세스 또는 유효하지 않은 상태에있는 Process 개체와 관련이없는 코드 줄에서 벗어나기는 항상 (원격?) 가능성이 있습니다. 현실 나는 당신이 단지 죽이기를 시도 / 잡을 수 있다고 생각합니다.
또한 응용 프로그램에 따라 어쨌든이 결과를 기록하는 것을 고려할 수 있습니다. 이는 최후의 수단으로 판단되기 때문입니다. 이 경우 실제 InvalidOperationException을 기록하십시오. 일이 이상 해지면 최소한 킬이 실패한 이유를 확인하기위한 로그를 남기십시오.
위와 같은 이유 때문에 Win32Exception을 포착 / 처리하는 것이 좋습니다.
C # 프로세스 waitforexit 예외
Process. Start () 메서드를 사용하여 다른 Exe를 시작하는 콘솔 응용 프로그램을 만들었습니다. Exe 2에서 예외를 발생 시키면 Exe1을 catch해야합니다. 다음은 내가 작성한 코드입니다.
static void Main (string [] args)
string arguments = string. Empty;
foreach (args의 문자열 strData)
string. Format ( "", arguments, strData);
프로세스 notePad = 새 프로세스 ();
SecureString secure = 새로운 SecureString ();
foreach ( "password"의 char c)
ProcessStartInfo startInfo = 새로운 ProcessStartInfo ();
using (프로세스 exeProcess = Process. Start (startInfo))
string. Format ( "-"LaunchModelCatalogueApp에서 예외 발생 : ", ex. Message), EventLogEntryType. Information);
정적 클래스 프로그램.
static void Main (string [] args)
Exe 2에서 예외가 발생하면 Exe 1을 catch해야합니다. 어떻게해야합니까?
감사합니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
모든 답장.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
예, 이것은 매우 좋은 개념입니다. 이전 프로젝트 중 하나를 적용했습니다. 당신은 예외를 통해해야하고 예외 파생 클래스에서 그것을 잡아야한다. 예를들 수 있습니다. / codecroject / KB / dotnet / unhandledexceptions. aspx 링크를 확인할 수 있습니다.
& ldquo; 답으로 표시 & rdquo;를 클릭하십시오. 이 게시물을 읽는 다른 커뮤니티 회원에게 유용 할 수 있습니다.
KashNetDev 편집자 2012 년 1 월 12 일 목요일 오전 6:26
Adavesh와 Kash에게 감사드립니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
Process. Start () 메서드를 사용하여 다른 Exe를 시작하는 콘솔 응용 프로그램을 만들었습니다. Exe 2에서 예외를 발생 시키면 Exe1을 catch해야합니다. 다음은 내가 작성한 코드입니다.
static void Main (string [] args)
string arguments = string. Empty;
foreach (args의 문자열 strData)
string. Format ( "", arguments, strData);
프로세스 notePad = 새 프로세스 ();
SecureString secure = 새로운 SecureString ();
foreach ( "password"의 char c)
ProcessStartInfo startInfo = 새로운 ProcessStartInfo ();
using (프로세스 exeProcess = Process. Start (startInfo))
string. Format ( "-"LaunchModelCatalogueApp에서 예외 발생 : ", ex. Message), EventLogEntryType. Information);
정적 클래스 프로그램.
static void Main (string [] args)
Exe 2에서 예외가 발생하면 Exe 1을 catch해야합니다. 어떻게해야합니까?
감사합니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
모든 답장.
Process. Start를 사용하여 새로운 프로세스를 시작하면 다른 프로세스에서 던져진 예외를 잡을 방법이 없습니다. 이를 위해서는 IPC (Inter Process Communication) 기술이 필요합니다. 원격 또는 Windows 통신 기반을 사용할 수 있습니다.
클라이언트 / 서버 응용 프로그램에서 예외를 잡는 방법에 대한 그물에 관한 많은 기사를 찾을 수 있습니다.
나는 이것이 당신을 돕기를 바랍니다.
문제를 해결 한 경우이 게시물을 답변으로 표시하십시오. 해피 프로그래밍!
Sarathi R 님이 작성한 답변 2012 년 1 월 16 일 월요일 오전 10:43 Dummy yoyo의 답변으로 표시 2012 년 1 월 24 일 화요일 오전 8:40.
예, 이것은 매우 좋은 개념입니다. 이전 프로젝트 중 하나를 적용했습니다. 당신은 예외를 통해해야하고 예외 파생 클래스에서 그것을 잡아야한다. 예를들 수 있습니다. / codecroject / KB / dotnet / unhandledexceptions. aspx 링크를 확인할 수 있습니다.
& ldquo; 답으로 표시 & rdquo;를 클릭하십시오. 이 게시물을 읽는 다른 커뮤니티 회원에게 유용 할 수 있습니다.
KashNetDev 편집자 2012 년 1 월 12 일 목요일 오전 6:26
Adavesh와 Kash에게 감사드립니다.
예외는 전체 프로세스 내 기능입니다.
표준 패러다임은 실행 파일이 주 메소드의 리턴 코드를 리턴하도록하는 것입니다. 0을 반환하면 성공적으로 완료되고, 다른 것이 반환되면 오류가 발생합니다. 반환 된 특정 번호는 오류 유형을 나타내는 데 사용할 수 있습니다. 여러 유형의 오류에 대한 정보를 신경 쓰지 않으면 오류를 반환하십시오.
이렇게하려면 main 메소드를 int Main 대신 void Main으로 변경하십시오. 메인 메소드 전체를 try / catch로 둘러 쌉니다. catch에서 return 1은 try가 끝날 때 0을 반환합니다.
Process 클래스의 ExitCode 속성을 사용하여 호출 응용 프로그램에서 값을 읽을 수 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
또 다른 간단한 접근법은 텍스트 파일에 예외를 기록하고 원하는 곳 어디에서든지 읽는 것입니다.
이 게시물에서 질문에 대한 답변을 얻으려면 & quot; 답변으로 표시 & quot;를 클릭하십시오. . 이 게시물이 도움이된다면 & quot; 유용한 정보로 표시 & quot;를 클릭하십시오. .
Dummy yoyo 편집자 편집자 2012 년 1 월 16 일 월요일 오전 8:21 링크를 편집하여 사용 가능하게 만드십시오. Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
감사합니다 Servy, 내가 ExitCode에 대해 알고 있고 나는 또한 피곤했습니다. 하지만 문제는 예외가 발생했기 때문에 코드의 도움으로 정확한 예외를 반환 할 수 없다는 것입니다.
감사합니다.
더 많은 양의 정보를 보내기 위해 표준 출력 또는 표준 오류 스트림을 사용할 수 있습니다. 이 경우 표준 오류가 가장 적합합니다. (exit 코드와 함께 사용해야합니다.) catch 블록의 표준 오류에 대한 예외를 출력하고, 호출 프로그램에서 출력 스트림을 리디렉션하고, 오류 스트림에서 읽습니다 (종료 코드가 있으면 무시). 0).
프로세스의 출력을 읽을 때 교착 상태가 발생했는지 확인하십시오. 특히 다른 두 스트림에서 읽는 경우 특히 그렇습니다. 프로세스의 MSDN 페이지에 몇 가지 일반적인 함정이 설명되어 있습니다.
Dummy yoyo 님의 답변으로 표시 중재자 2012 년 1 월 24 일 화요일 오전 8:40.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.
Comments
Post a Comment