Tôi đã thấy định dạng Deployment.Current.Dispatcher.BeginInvoke (() => {...}) này trong một số mã. Có phải nó được sử dụng để thực hiện một số công việc trong Nền không? Các ứng dụng chung của nó là gì?Việc sử dụng Deployment.Current.Dispatcher.BeginInvoke (() => {...}) là gì?
Trả lời
Không, nó không phải là để làm việc trong một nền chủ đề - đó là để làm việc trên UI chủ đề. Vì vậy, thường là được gọi là từ một chuỗi nền, để thao tác với giao diện người dùng, chỉ có thể thực hiện được trên chuỗi giao diện người dùng.
Phần thân của biểu thức lambda là mã mà bạn muốn thực thi trong chuỗi giao diện người dùng.
Khi mã cập nhật giao diện người dùng thực hiện từ chuỗi không phải là chuỗi giao diện người dùng, ngoại lệ truy cập qua luồng không hợp lệ xảy ra.
Bộ điều phối cho phép bạn chuyển một số mã qua chuỗi giao diện người dùng từ một chuỗi khác.
Dự án tôi đưa vào bài đăng này thể hiện điều này, trong số các khái niệm khác.
WebClient, HttpWebRequest and the UI Thread on Windows Phone 7
bạn sẽ cần sử dụng Deployment.Current. Dispatcher trong ứng dụng Silverlight khi bạn thấy mình đang làm việc trong một chuỗi công việc không phải UI (trong một ngữ cảnh không kế thừa từ DependencyObject) và bạn cần cập nhật giao diện người dùng.
- 1. Việc sử dụng "??" là gì?
- 2. Sử dụng vim, "<,'>" là gì?
- 3. Việc sử dụng window.external là gì?
- 4. Việc sử dụng LOCAL_MODULE_TAGS là gì?
- 5. Việc sử dụng singletonList là gì?
- 6. Việc sử dụng typedef là gì?
- 7. Việc sử dụng udevadm là gì?
- 8. việc sử dụng string.Clone() là gì?
- 9. Việc sử dụng plist là gì?
- 10. Việc sử dụng "khoan dung" là gì?
- 11. Việc sử dụng AtomicReferenceArray là gì?
- 12. Việc sử dụng Indexers là gì?
- 13. Việc sử dụng <permission-group> trong android là gì?
- 14. Lợi thế của việc sử dụng arrayWithCapacity so với việc sử dụng mảng là gì?
- 15. Việc sử dụng Array.prototype.slice.call (mảng, 0) là gì?
- 16. Việc sử dụng các automata hữu hạn là gì?
- 17. Việc sử dụng Invoke() trong .net là gì?
- 18. việc sử dụng tệp .CSProj và .Sln là gì?
- 19. Việc sử dụng data-role = "fieldcontain" là gì?
- 20. Việc sử dụng HeaderedContentControl trong wpf là gì?
- 21. Việc sử dụng DECIMAL (x, 0) là gì?
- 22. Việc sử dụng cú pháp: = cú pháp là gì?
- 23. Việc sử dụng ". @" Trong tiếng groovy là gì?
- 24. Việc sử dụng giao diện IClonable trong .NET là gì?
- 25. Việc sử dụng ^: động trên xác thực là gì?
- 26. Việc sử dụng quyền Android Wake Lock là gì?
- 27. Điểm của việc sử dụng UDP với NIO là gì?
- 28. Eclipse Juno - Việc sử dụng package-info.java là gì?
- 29. Việc sử dụng thẻ túi trong Hibernate là gì?
- 30. Việc sử dụng biểu tượng @ trong PHP là gì?
Jon, mức độ phổ biến của các bài đăng của bạn trên SO là ngoại lệ. Mũ của tôi là tắt cho bạn :) –
Điều cũng quan trọng là phải đề cập rằng BeginInvoke có thể được sử dụng từ chính chuỗi giao diện người dùng đến hành động theo dõi trên chuỗi giao diện người dùng sau hàng đợi hành động giao diện người dùng hiện tại trống. Về cơ bản trì hoãn công việc cho đến khi chuỗi giao diện người dùng không còn hoạt động nữa. – JustinAngel
@JonSkeet: làm cách nào tôi có thể thực thi mã trong chuỗi nền, vì mã này đang chặn thanh tiến trình của tôi hiển thị trên UI – Rohaan