본문 바로가기

Programming/Xamarin

Only the original thread that created a view hierarchy can touch its views exception

반응형




Android.Util.AndroidRuntimeException: Only the original thread that created a view hierarchy can touch its views.


Xamarin.Forms 페이지들간의 호출관계 및 각 페이지의 async/await 패턴을 정리하다가 위와 같은 예외가 발생했다.

비슷한 문제를 Winform, WPF 에서 겪어봐서 어떤 상황인지는 보자마자 대강 감이왔다.


Original thread (UI Thread 혹은 Main Thread)가 아닌 thread에서 UI 작업을 시도할 때 발생하는 예외이다.


아래와같이 BeginInvokeOnMainThread() 를 통해 Original thread에서 해당작업을 수행하도록 하면 된다.


1
2
3
4
5

Device.BeginInvokeOnMainThread(() =>
{
    // Do UI task here.
});
cs


뭔가 사이드이펙트가 있을 것 같은 느낌아닌 느낌이 드니까 추후 다른방법도 찾아봐야겠다.

반응형