2011-01-27 6 views
0

컨트롤을 이동하거나 최소한 컨트롤을 다른 스레드로 복사 한 다음 컨트롤을 만든 것일 수 있습니다. 그 이유는 컨트롤을 백그라운드 스레드에서 완전히로드 한 다음로드가 완료되면 컨트롤을 다른 스레드로 옮기고 싶기 때문입니다. 예를 들면 다음과 같습니다.winforms - 컨트롤을 다른 스레드로 이동

답변

1

아니요, 불가능합니다. 컨트롤 은 기본 스레드에서이어야합니다.

당신은 그런 식으로 코드를 수정해야합니다 : 당신은 호출을 사용하여 별도의 스레드에서 컨트롤을 업데이트 할 수 있습니다

BackgrundworkRunasync(object sender, DoWorkEventArgs e) 
{ 
    e.Result = GetData(); 
} 

BackGroundWorkerComplete (object sender, RunWorkerCompletedEventArgs e) 
{ 
    CreateControl mycontrol = new CreateControl() //Tyep of WindowsForm 
    mycontrol.Data = e.Result; 
    myControl.mdiparent = this; 
    myControl.Show(); 
} 
0

아니요. 허용되지 않습니다. 모든 컨트롤은 단일 스레드로 서비스해야합니다. 이것은 창을 만드는 데 사용 된 스레드입니다. 일반적으로 프로세스의 첫 번째 스레드입니다.

관련 문제