2011-08-02 4 views
1

처음에 보낸 동일한 명령 인수를 전달할 수 있도록 arg에 전달 된 콘솔 응용 프로그램을 갖고 싶습니다.인수를 사용하여 콘솔 앱을 재귀 적으로 호출하는 방법은 무엇입니까?

나는이 그러나

static void Main(string[] args) 
{ 
    Assembly ass = System.Reflection.Assembly.GetExecutingAssembly(); 
    string cmd = Environment.CommandLine; 

    Process again = new Process(); 
    again.StartInfo.FileName = ass.Location; 
    again.StartInfo.Arguments = args[0]; 
    Console.WriteLine("Running with: " + args[0]); 
    System.Threading.Thread.Sleep(10000); 
    again.Start(); 
    return; 
} 

초기 호출 인쇄가 "실행 :에서 Argument4"을하려고하면 있지만 인수 배열이 비어 있기 때문에 두 번째 호출이 실패합니다.

+3

아마도 '조립품'은 엉덩이라고 불리는 것을 좋아하지 않으므로 본인임을 밝히지 않습니다. :) –

+1

Project + Properties, Debug 탭의 "Visual Studio 호스팅 프로세스 사용"옵션에서 발생할 수있는 부작용이 있습니다. Yourapp.exe 대신 yourapp.vshost.exe 프로세스가 만들어집니다. Skeet은 IDE를 사용하지 않음으로써 피할 수있었습니다. 아무것도 분명하지만, 여전히 작동 할 수 있습니다. –

답변

3

나를 위해 작동합니다. 내가 정확히컴파일 된 코드 :

using System; 
using System.Diagnostics; 
using System.Reflection; 

class Test 
{ 
    static void Main(string[] args) 
    { 
     Assembly ass = System.Reflection.Assembly.GetExecutingAssembly(); 
     string cmd = Environment.CommandLine; 

     Process again = new Process(); 
     again.StartInfo.FileName = ass.Location; 
     again.StartInfo.Arguments = args[0]; 
     Console.WriteLine("Running with: " + args[0]); 
     System.Threading.Thread.Sleep(1000); 
     again.Start(); 
     return; 
    } 
} 

명령 행 사용 :

csc Test.cs 

을 그리고 실행을 같이

Test.exe hello 

... 그리고 그것을 반복적으로 별도의 프로세스를 시작, 각각은 "Running with : hello"를 인쇄했습니다.

+0

확인 됨 :-). 비트 (첫 번째 인수)를 수정했지만 동일한 논리를 유지했습니다. 여기서 확인을 실행합니다. –

+0

VS2008에서 디버깅하고 디버그> 시작 옵션> 명령 줄 인수 아래에 args를 설정하면 위에서 설명한대로 실패하지만 cmd.exe에서 실행하면 작동합니다. 왜 그런지 궁금합니다. 도와 주셔서 감사합니다. – etoisarobot

관련 문제