2013-05-27 1 views
-2

해결할 수없는 간단한 문제가 있습니다. 나는 C#에서 스레드를 사용하는 방법을 배우고, 내가 그 코드와 다른 스레드에서 콘솔에 작성하려고 : 출력에 아무것도 인쇄C# Console.WriteLine 다른 Thead가 작동하지 않습니다.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     Thread thread = new Thread(myFunc); 
    } 

    public void myFunc() 
    { 
     Console.WriteLine("Test"); 
    } 
} 

있습니다. WriteLine을 공용 MainWindow()에서 움직이면 작동합니다 ... 어디에서 문제가 발생합니까?

감사합니다.

+0

몇 가지 팁 : 1) 스레드를 사용하지 말고 ThreadPool, TPL, Tasks를 사용하십시오. 2) WinForms/WPF 응용 프로그램에서 콘솔로 테스트하지 마십시오. –

답변

1

스레드를 만들었지 만 실행 중이 아닙니다. 스레드를 시작해야합니다. 작성한 후 thread.Start()으로 전화하십시오.

+0

예 감사합니다. 작동 ... 내 나쁜! – user2108742

1

스레드를 시작하더라도 (@mike가 언급 했으므로 추가해야 함) 아무 것도 볼 수 없습니다. 스레드가 프로그램을 실행할 기회가 있기 전에 (기본 메소드) 종료됩니다.

thread.Start(); 
thread.Join(); 

+0

사실 나는 그것을 시작하려고 노력하고 그것은 작동합니다 ... – user2108742

+0

아마도 디버그 모드에서 실행하고 있습니다. 그리고 그것은 콘솔에 프린트되거나 프린트되지 않을 수도 있습니다; OS 코어의 상황이 스레드 스케줄링에 어떻게 의존하는지에 달려 있습니다. 짧지 만 (유용하게도) 유용한 것을 제공하기를 원했기 때문에 세부 사항에 들어 가지 않았습니다. .NET에서 병렬 프로그래밍을 시작하려면 스레드를 사용하지 않고 TPL (Task Parallel Library) (IMHO 및 경험)을 배우십시오. –

1

전화 때문에 스레드가 실행 마무리 시작할 수 있습니다.

관련 문제