저는 VB 6에서 왔고 VB.NET에 준결승입니다. Windows Phone 8 응용 프로그램을 작성하고 있습니다. 파일 스트림에서 데이터를 동적으로 표시하려는 여러 textBlock이있는 표가 있습니다 (스캔 된 데이터 포함).WP8 textBlock을 변경할 때 "잘못된 크로스 스레드 액세스"
WP8 페이지가 열리면 자동으로 데이터가 textBlocks에로드됩니다. 이 작동합니다. 파일에서 데이터를로드하기 전에 모든 textBlock을 "재설정"하고 숨길 수 있습니다. 이를 위해 필자는 모든 textBlock에 대해 기본적으로 다음을 수행하는 절차를 사용하고자했습니다.
tbl1.Text = ""
tbl1.Visibility = System.Windows.Visibility.Collapsed
이것은 페이지가로드 될 때 정확히 한 번 작동합니다. 프로시 저는 오류를 생성하지 않습니다.
유형의 예외 '시스템 : 나중에 다시 메서드를 호출 할 때 나는 페이지에 표시된 데이터를 새로 고칠 때
지금, 나는 코드의 첫 번째 줄에 다음과 같은 오류가 위에 표시된 얻을 .UnauthorizedAccessException 'System.Windows.ni.dll에서 발생했지만 사용자 코드에서 처리하지 않았습니다. 추가 정보 : 잘못된 크로스 스레드 액세스.
나는 조금 잃었습니다. VB6에서는 UI 요소를 통해 원하는 모든 작업을 수행 할 수있었습니다. 나는 여기에 초보자 실수를하고 있다고 생각 하나?
일부 Dispatcher 내용을 읽었습니다. 그러나 단순히 textBlock의 값을 변경하는 것은 지나치게 복잡합니다. 간단한 방법이 없습니까?
이 값을 변경하는 데 사용하는 방법은 무엇입니까? 비동기 적으로 실행됩니까? 그 방법으로 더 많은 코드를 보여줄 수 있습니까? – Romasz
처음 페이지 생성자에서 호출됩니다. 그러나 직접적으로는 아닙니다. 비동기 하위 프로 시저에 있습니다. 스캐너가 데이터를받은 후 두 번째로 이벤트가 호출되었습니다. Private Sub oBCScanner_DataReceived (보낸 사람 객체, e As BarcodeScannerDataReceivedEventArgs) – Verun
처음으로 이해했듯이 (페이지가로드 될 때) 작동합니다. 그럼 두 번째로 어디에서 호출합니까? 일부 빌드 - 인 (build-in) 메톤도 비동기 적으로 실행될 수 있습니다. – Romasz