WinForm과 WPF의 차이에 의해서 멀티 스레드에서 컨트롤을 조작 하는 방법이 서로 다릅니다.

방법은 MSDN 매거진에서 찾았습니다.

제가 보기에는 아래 방법이 가장 간단하더군요.


참조 : http://msdn.microsoft.com/ko-kr/library/ms741870.aspx


아래의 예는 리스트박스에 새로운 데이터를 추가하는 것이다.


private delegate void ListBoxDelegate(string arg);

 

void SetStateText(string state)
{
         this.listBox1.Dispatcher.BeginInvoke(

                   System.Windows.Threading.DispatcherPriority.Normal,
                             new ListBoxDelegate(UpdateListBox), state);
}

private void UpdateListBox(string state)
{
        this.listBox1.Items.Add(state);
}



메인 스레드가 아닌 곳에서는 SetStateText(string state)을 호출하여 리스트박스를 변경한다. 


신고
by 흥배 2009.03.21 12:13
| 1 |

티스토리 툴바