2011-09-08 7 views
8

Tôi cần sử dụng chức năng gọi lại để thực hiện một số tác vụ xử lý bài đăng khi hàm bắt đầu với kết thúc Dispatcher.BeginInvoke. Tuy nhiên tôi không thể tìm thấy bất kỳ tham số trong Dispatcher.BeginInvoke để chấp nhận một cuộc gọi lại. Có thể cung cấp chức năng gọi lại cho Dispatcher.BeginInvoke không?cách gọi hàm gọi lại cho Dispatcher.BeginInvoke

Trả lời

10

Đối tượng DispatcherOperation được trả lại bởi BeginInvoke có sự kiện Completed trên đó. Theo dõi mà để thực hiện các hoạt động sau khi hoàn thành:

var dispatcherOp = Dispatcher.BeginInvoke(/* your method here */); 
dispatcherOp.Completed += (s, e) => { /* callback code here */ }; 

Có một cơ hội hoạt động sẽ hoàn thành trước khi bạn đăng ký, vì vậy bạn có thể kiểm tra Status bất động sản sẽ hoàn thành sau cũng như:

if (dispatcherOp.Status == DispatcherOperationStatus.Completed) { ... } 

Có thể cho các hoạt động được hủy bỏ là tốt, do đó, xử lý/thử nghiệm cho Aborted cũng có thể thích hợp.

+3

Lưu ý rằng tính năng này không khả dụng trên Windows Phone 7, 8 và Silverlight :( –