본문 바로가기
WPF - DevExpress

"다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다."

by 캡틴노랑이 2021. 5. 5.
반응형

"다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다."

 

아래 메서드를 사용 하면 됨. 

Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { To do }));

 

 

아래의 경우는,  DB에서 데이터를 조회 후에, DevExpress Grid에 바인드 할 때 조회 되는 동안, wait indicator을 보여주려고 하였으나, 보여 줄 수가 없어서, 아래와 같이 함. 

 

private async Task GetBindGrid()
{
    wiWait.Visibility = Visibility.Visible;

    await Task.Run(() => DoWork());
}

private void DoWork()
{
    Thread.Sleep(5000);           

    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate {

        var data = (new CommonCodeDAO()).Z_UP_PurchaseOrderHeader_T_LIST("");
        gcGrid.ItemsSource = data;
        wiWait.Visibility = Visibility.Hidden;
    }));
}
반응형

댓글