2013-05-30 1 views
0

에 새로 고쳐지지하고 동적으로 이런 식으로 논리에 따라 코드 숨김에서 자신의 소스를 설정하고있다.이미지는 내 창문 전화 XAML 페이지에 일부 이미지가 UI

img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Images/MAP/" + Path + ".png"); 

와 페이지가로드 및 이미지가 완전히로드하지만 내 응용 프로그램 논리에 따라 내가 XNA 기반의 사용자 지정 메시지 상자 두 개의 버튼이있는 메시지 상자를 표시 할 때 잘 작동합니다. 나는 동적으로 다시 이미지를로드해야하고 내가 같은 위의 함수를 호출하지만, 그 당시의 나에게 "Invalid Cross Thread Exception"이 될 수 있음 예외를 제공 한 확인을 사용자가 클릭 일단 UI 스레드에서 내가 시도하지 않은 배경 스레드에서 이미지 소스 설정에 기인한다 Dispatcher뿐만 아니라 거기에 예외는 아니었다 그러나 UI이 왜 그런지 사람이 알려주십시오 수

를 새로 고쳐지지 않습니다이 디스패처은이

this.Dispatcher.BeginInvoke(new System.Action(delegate() 
       { 
        img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Images/MAP/" + Path + ".png"); 
       })); 

같은? 그리고 같은 메시지 상자에서 다시 탐색하려했습니다. OK 버튼을 다시 누릅니다. 동일한 "Invalid Cross Thread"예외가 발생했습니다.

+0

은' "잘못된 크로스 스레드 예외는"'참 ('img1.Source'를) UI 속성을 설정하려고 또는 UI 스레드가 아닌 스레드에서 UI 동작의 다른 종류의 일을하려고 문제입니다. 은'Dispatcher'를 사용하면 (이것은 또한 탐색 킥오프 할 수있는 방법이 될 것이다) UI 스레드에서 실행되는 코드를 전송하는 올바른 방법입니다. 이미지가 실패한 경우 아래와 같이'ImageFailed' 이벤트를 연결하십시오. – Oren

답변

0

img1.ImageFailed에 이벤트 처리기를 추가해보십시오. 이미지로드에 실패하면 자동으로 수행됩니다 그 사건을 듣고있어.

관련 문제