Tôi đã gặp vấn đề truy cập Chủ đề chéo không hợp lệ, nhưng một ít nghiên cứu và tôi đã cố gắng khắc phục sự cố bằng cách sử dụng Trình điều phối.Tìm hiểu về Silverlight Dispatcher
Bây giờ trong ứng dụng của tôi, tôi có các đối tượng bị tải chậm. Tôi muốn thực hiện một cuộc gọi Async sử dụng WCF và như thường lệ tôi sử dụng Dispatcher để cập nhật các đối tượng của tôi DataContext, tuy nhiên nó không làm việc cho kịch bản này. Tuy nhiên tôi đã tìm thấy một giải pháp here. Đây là những gì tôi không hiểu.
Trong UserControl của tôi, tôi có mã để gọi một phương thức Chuyển đổi trên đối tượng của tôi. Các cuộc gọi đến phương pháp này là trong một Dispatcher như vậy.
Dispatcher.BeginInvoke(() => _CurrentPin.ToggleInfoPanel());
Như tôi đã đề cập trước đây không đủ để thỏa mãn Silverlight. Tôi phải thực hiện một số khác Cuộc gọi của người điều phối trong đối tượng của tôi. Đối tượng của tôi là KHÔNG phải là UIElement, nhưng là một lớp đơn giản xử lý tất cả tải/tiết kiệm của riêng nó.
Vì vậy, vấn đề đã được cố định bằng cách gọi
Deployment.Current.Dispatcher.BeginInvoke(() => dataContext.Detail = detail);
trong lớp học của tôi.
Tại sao tôi phải gọi cho Điều phối viên hai lần để đạt được điều này? Chẳng phải một cuộc gọi cấp cao là đủ sao? Có sự khác biệt nào giữa Deployment.Current.Dispatcher và Dispatcher trong UIElement không?
Tôi không nghĩ rằng bạn cung cấp đủ mã. Tôi sẽ nghi ngờ một cái gì đó bạn đang làm là bắn một cuộc gọi mạng, đó là trở lại trong một chủ đề nền, do đó hai gọi? –