2011-12-19 19 views
7

SynchronizationContext có thuộc tính được gọi là IsWaitNotificationRequired. Vì mục đích của nó, số docs có điều này để nói:SynchronizationContext.IsWaitNotificationRequired cho là gì?

Xác định xem có cần thông báo chờ hay không.

đúng nếu chờ thông báo; ngược lại, sai.

Gosh, làm rõ mọi thứ.

Chính xác "thông báo chờ" này là gì và khi nào/tại sao nó được yêu cầu/không bắt buộc? Có phải là IsWaitNotificationRequired điều gì đó dọc theo các dòng Control.InvokeRequired hoặc điều này khác biệt?

+0

Câu trả lời này có thể hữu ích: http://stackoverflow.com/a/5109784/245183 –

+0

@OndrejTucny, tôi không chắc phải làm gì cho câu trả lời đó ... điều đó có nghĩa là nó cho phép bạn chỉ định WinAPI nào cuộc gọi 'Monitor.Enter' và' Monitor.Exit' thực sự sử dụng để chờ trên một khóa? Điều gì sẽ xảy ra khi 'IsWaitNotificationRequired' là sai? –

+0

Phương thức WaitHelper() bên trong là khóa, nó gọi mã chờ xử lý bên trong CLR an toàn cho các căn hộ đơn luồng COM. Nó bơm một vòng lặp tin nhắn nó là chủ đề STA để đảm bảo rằng sự chờ đợi không gây ra bế tắc. WPF cần nó. Đánh giá MsgWaitForMultipleObjects(). –

Trả lời

1

Đây là cơ sở hạ tầng cho phép gắn vào thói quen chờ đồng bộ hóa CLR. bài viết trên blog này giải thích cách làm việc này: http://www.bluebytesoftware.com/blog/PermaLink,guid,710e6ba3-60e9-4f5e-a5a7-d878015c7a16.aspx

Khách sạn này sẽ luôn luôn trả false nếu hành vi này chưa được ghi đè cụ thể trong một lớp con của SynchronizationContext và nếu nó không thực hiện ghi đè bạn của phương pháp Wait được gọi.

+0

Liên kết bị hỏng :-( –