2017-12-25 25 views
-2

다음 코드는 동일한 작업을 수행하지만 다른 작업은 수행하지 않는 스레드를 만드는 두 가지 방법을 보여줍니다. 내가 보는 것에서 차이점은 변수 선언입니다. 누군가가 이것이 Error: Cannot implicitly convert type 'void' to 'System.Threading.Thread'으로 연결되는 이유를 설명 할 수 있습니까?오류 : 암시 적으로 'void'유형을 'System.Threading.Thread'로 변환 할 수 없습니다.

public MainWindow() 
{ 
    InitializeComponent(); 

    // Runs OK 
    new Thread(() => { MessageBox.Show("foo");}).Start(); 

    // Error: Cannot implicitly convert type 'void' to 'System.Threading.Thread' 
    Thread t = new Thread(() => { MessageBox.Show("foo”); }).Start(); 
} 
+1

시작 무효를 반환하고 메시지를 컴파일러 스레드 – Nkosi

+1

에주의에 할당하려고합니다. 유용합니다. 한 유형을 다른 유형으로 변환 할 수 없다는 메시지는 일종의 지정에서 한 유형의 표현식이 지정 대상에 필요한 유형으로 변환 될 수 없다는 것을 알려줍니다. 귀하의 경우, 메서드의 반환 값을 변수에 할당하려고 시도하지만 해당 메서드는 값을 반환하지 않습니다. 해당 오류 메시지의 사이트를 검색하고 오류 메시지를 직접 이해할 수있는 충분한 정보가있는 경우 Q & A가 표시된 소수의 중복 된 항목을 확인하십시오. –

답변

0

.Start() 반환 void. .Start() 호출 결과를 Thread t에 할당하고 스레드 자체를 할당하지 않습니다.

당신은 수행해야합니다

Thread t = new Thread(...); 
t.Start();