상세 컨텐츠

본문 제목

WPF invoke, thread에서 UI 접근 방버

자주 사용하는 코딩 문법/c#, winform, wpf

by 신성한거북이 2019. 11. 28. 14:59

본문

//

// 아래 예제는 모두 Windows 클래스 내에서 유효하다

//

 

this.Dispatcher.Invoke((Action)(() =>
{

    // 여기에 UI 접근 코드를 넣으면 된다. 

}));

 

// sample 패턴

void UIHandling()

{

    this.Dispatcher.Invoke((Action)(() => 
    {

        // 여기에 UI 접근 코드를 넣으면 된다. 

    }));

}

 

void Initialize()

{

    //...

    UIHandling();

}

 

// 다른 곳에서 

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

 

//--------------------------------------------------------------

// 다른 방법

void something()
{
    // ...
    InvokeAction(() => UIHandling());
    // ...
}

private void InvokeAction(Action action)
{
    if (action == null) return;

    if (Dispatcher == null)
        action();
    else
        Dispatcher.BeginInvoke(action);
}

관련글 더보기