2013-04-13 2 views
3

두 가지 형식의 프로젝트가 있고 새 프로세스에서 form2를 시작해야합니다. 어떻게해야합니까? 알 수있다새 프로세스에서 form2를 시작하는 방법은 무엇입니까?

Form2 f2 = new Form2(); 
f2.Show(); 
this.Hide(); 

이다 그러나이 경우에 나를 위해 좋지 않다입니다. 새로운 프로세스 (다른 .exe 파일)로 시작해야합니다.

어쨌든 어떻게해야합니까?

[업데이트]

I 당신은 별도의 프로젝트에 Form2를을 작성하고 사례 호출 할 수 있습니다

Form2 f2 = new Form2(someInformation); 
f2.Show(); 
this.Hide(); 
+2

왜 그렇게하고 싶습니까? – Joe

+3

정말 필요하다면 @Tomtom 응답으로 진행하거나'main'에 기능을 추가하여 열어야하는 양식을 나타내는 인수로'.exe '를 호출 할 수 있습니다. 그러나 데이터를 전달하려는 경우 정말 어렵고 불필요한 것처럼 보입니다. – Schaliasos

+0

나쁜 생각은 아닙니다, 저는 그것에 대해 생각하고 있습니다. – gereb95

답변

3

처럼, 나는 Form2를 몇 가지 정보를 전달해야한다는 것을 당신에게 잊지 경우

System.Diagnostics.Process.Start("Form2.exe"); 
+0

나는 ' 이것을 할 것이지만 @Schaliasos가 말한 것처럼. – gereb95

1

하여 EXE 파일 새 스레드를 의미한다, 이렇게 :

var secondFormThread = new Thread(() => Application.Run(new Form(someInformation))); 

this.Hide();      // Hide the current form 

secondFormThread .Start();   // now show the other one in a new thread 
secondFormThread .WaitForExit(); // wait for this thread to finish or 
            // maybenot, may add a timeout. Whatever 
            // suits your needs. 

this.Show();      // Show the first form again 
+1

그는 새로운 * 프로세스 *가 아니라 새로운 * 스레드 *라고 말했습니다. 둘 사이에 큰 차이가 있습니다. – Servy

+1

그래도 사람들은 스레드와 프로세스의 차이점을 모른다. 그래서 차이는 없습니다 _huge _... – CSharpie

+1

예, 그 차이는 엄청납니다. 사람들이이 두 가지를 혼동한다는 사실이 그것이 큰 차이가 아니라는 것을 의미하지는 않습니다. OP가 다른 프로세스를 원한다고 생각한다면, 프로세스와 스레드를 의미하는지 확신 할 수 있는지 묻는 것이 좋습니다. 그것이 그렇듯이, 새로운 스레드가 아닌 새로운 프로세스를 원한다는 것이 분명합니다. 따라서이 대답은 매우 명확합니다. OP가 그가 실수를 범한다는 것을 깨닫게되면, 새로운 프로세스가 아닌 새로운 스레드를 원한다는 것을 나타 내기 위해 질문을 편집합니다. 그런 다음 적절한 대답을 만듭니다. – Servy

관련 문제