Bạn chỉ cần DispatcherHelper
khi yo muốn thực hiện thay đổi đối với các thành phần trên chuỗi giao diện người dùng của bạn, từ mã chạy trên một chuỗi khác. Ví dụ. trong một ứng dụng Silverlight bạn gọi một dịch vụ web để lấy một số dữ liệu một cách không đồng bộ, và bây giờ muốn thông báo cho Ui rằng dữ liệu có mặt qua một sự kiện OnNotifyPropertyChanged
.
Trước tiên, bạn phải khởi tạo DispatcherHelper
. Trong Silverlight bạn làm điều này trong Application_Startup
:
//initialize Dispatch helper
private void Application_Startup(object sender, StartupEventArgs e) {
RootVisual = new MainPage();
DispatcherHelper.Initialize();
}
trong WPF việc khởi tạo được thực hiện trong constructor tĩnh của bạn App lớp:
static App() {
DispatcherHelper.Initialize();
}
Sau đó, trong trường hợp của bạn, xử lý việc hoàn thành cuộc gọi asnc của bạn, sử dụng đoạn mã sau để gọi RaisePropertyChanged
trên thread UI:
DispatcherHelper.CheckBeginInvokeOnUI(
() => RaisePropertyChanged(PowerStatePropertyName)
);
DispatcherHelper.BeginInvokeOnUl
hy vọng một Action
nên y Bạn có thể sử dụng bất kỳ mã nào ở đây chỉ cần sử dụng
DispatcherHelper.CheckBeginInvokeOnUI(
() => { /* complex code goes in here */ }
);
để thực hiện các tác vụ phức tạp hơn.