2009-02-27 40 views
5

tôi tìm thấy mã này:Việc sử dụng Invoke() trong .net là gì?

this.Invoke(new EventHandler(EventGetSum)); 

Đây có phải là không giống như viết:

EventGetSum(); 

việc sử dụng này là gì?

+0

Đó là một tiêu đề khá xấu, có thể bạn nên xem xét việc thay đổi nó thành một cái gì đó mô tả hơn – grapefrukt

+0

Kiểm tra câu hỏi này http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -method-to-a-windows-forms-control/571749 # 571749 – alex2k8

Trả lời

13

Nếu bạn viết EventGetSum() thì ngay lập tức gọi phương thức EventGetSum.

Nếu bạn viết new EventHandler(EventGetSum) sẽ tạo một đại biểu mà (lần lượt) sẽ gọi EventGetSum khi được gọi.

Cuộc gọi đến Control.Invoke gọi người được ủy quyền từ chuỗi giao diện người dùng chịu trách nhiệm kiểm soát. Điều này là cần thiết vì bạn không được truy cập các phần tử giao diện người dùng từ các chuỗi tùy ý.

5

Nó thực thi phương pháp EventGetSum trong chuỗi để cửa sổ this thuộc về.

4

Điều này thường được sử dụng khi xử lý các cuộc gọi giao diện người dùng theo chủ đề chéo.

Xem tài liệu MSDN cho ISynchronizeInvoke.

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