2013-09-07 35 views
8

Nếu các câu lệnh trong biểu đồ cuộc gọi sau điểm "đang chờ" không truy cập bất kỳ đối tượng nào không có nguồn gốc từ lớp System.Windows.UIElement, chúng tôi có thể nói rằng nhà phát triển sử dụng an toàn ConfigureAwait (sai) cho các ứng dụng Windows Mobile?Quyết định khi nào sử dụng ConfigureAwait (false)

Loại câu lệnh nào phải được thực thi trên luồng giao diện người dùng bên cạnh việc cập nhật các phần tử GUI?

Trả lời

9

Bất kỳ mã nào trực tiếp (hoặc gián tiếp) điều khiển các thành phần giao diện người dùng đều phải chạy trong ngữ cảnh giao diện người dùng. Thông thường, điều này chỉ bao gồm thao tác trực tiếp và cập nhật ViewModels.

Trong mọi trường hợp khác, bạn nên sử dụng ConfigureAwait(false).

+2

Để [báo giá chính mình] (http://blog.stephencleary.com/2012/02/async-and-await.html): * Quy tắc chung là sử dụng 'ConfigureAwait (false)' trừ khi bạn biết bạn * cần * cần bối cảnh. * –

+0

Tôi muốn thực hiện một phân tích tĩnh để tìm ra các trường hợp mà tôi không cần bối cảnh. Có an toàn không nếu tôi thực hiện theo cách trên? –

+0

@TomK .: Nếu bạn triển khai phân tích tĩnh của mình để bao gồm bất kỳ mã nào làm tăng sự kiện khi bất kỳ đăng ký nào của sự kiện đó có thể cập nhật phần tử giao diện người dùng thì điều đó là đủ. –

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