2011-04-05 2 views
1

다른 스레드에서 내 함수를 실행하려고하지만 문제는 함수에 매개 변수가 필요하다는 것입니다.새 paramatirized 스레드 만들기

내가 paramters (CPUPlay())의 확인을 필요로하지 않는 기능을 시도 할 경우 :

private void OpenNewThread(bool open) 
    { 
     Thread thread = new Thread(new ThreadStart(CPUPlay)); 
    } 

하지만 매개 변수를 필요로하는 기능을하려고하면 작동하지 않습니다 :

private void OpenNewThread(bool open) 
{ 
    Thread thread = new Thread(new ParameterizedThreadStart(CloseOpenAnimation)); 
    thread.Start(open); 
} 

그래서 내가 어떻게 다른 스레드의 매개 변수와 함수를 실행할 수 있습니까?

+2

정말 언제 사람들이 "작동하지 않는다"는 것을 ** ** 오류 설명이라고 배웁니다. –

답변

1

치트 및

private void OpenNewThread(bool open) 
{ 
    Thread thread = new Thread(new ThreadStart(
     () => CloseOpenAnimation(open))); 
    thread.Start(); 
} 
0

BackgroundWorker 구성 객체를 시도 대의원을 사용합니다. 사용할 수있는 객체 매개 변수 인 Argument가 있습니다.

BackgroundWorker bg = new BackgroundWorker(); 
bg.DoWork+=new DoWorkEventHandler(bg_DoWork); 
bg.RunWorkerAsync(5); 

static void bg_DoWork(object sender, DoWorkEventArgs e) 
{ 
      int j = (int)e.Argument; 
} 

여기서 e.Argument는 object 유형입니다.

2

기능이이 서명과 일치합니까?

public void CloseOpenAnimation(object argument)