2011-01-13 40 views

Trả lời

41

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.

+1

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 :) –

+8

Đ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

+0

@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

6

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

2

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.

Các vấn đề liên quan