Lưu ý rằng không chỉ thay đổi API (chấp nhận API từ các ứng dụng WindowsStore), mà cách mà Dispatcher thu được trong windowsPhone 8.0 cũng đã thay đổi.
Đề xuất của @Johan Faulk, mặc dù sẽ hoạt động, có thể trả về null dưới nhiều điều kiện.
Cũ mã để lấy dispatcher:
var dispatcher = Deployment.Current.Dispatcher;
or
Deployment.Current.Dispatcher.BeginInvoke(()=>{
// any code to modify UI or UI bound elements goes here
});
mới trong Windows 8.1 triển khai không phải là một đối tượng có sẵn hoặc namespace.
Để đảm bảo chính UI Chủ đề phối thu được, sử dụng như sau:
var dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;
or
CoreApplication.MainWindow.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
()=>{
// UI code goes here
});
Thêm vào đó, mặc dù phương pháp này cho biết sẽ được thực thi Async từ khóa đang chờ đợi không thể được sử dụng trong phương pháp viện dẫn bởi RunAsync. (trong ví dụ trên là phương thức ẩn danh).
Để thực thi phương thức chờ trong phương pháp ẩn danh ở trên, hãy trang trí phương thức ẩn danh bên trong RunAsync() bằng từ khóa async.
CoreApplication.MainWindow.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
**async**()=>{
// UI code goes here
var response = **await** LongRunningMethodAsync();
});
Nguồn
2014-06-25 18:34:36
cảm ơn , nó hoạt động – IloveIniesta