Tôi đã nhìn thấy thiết lập chung cho việc truy cập luồng chéo vào điều khiển GUI, chẳng hạn như được thảo luận tại đây: Shortest way to write a thread-safe access method to a windows forms controlCó gì sai khi gọi Invoke, bất kể InvokeRequired là gì?
Tất cả các lần truy cập web tôi tìm thấy mô tả một điều tương tự.
Tuy nhiên, tại sao chúng ta cần phải kiểm tra InvokeRequired? Chúng ta có thể gọi Invoke trực tiếp không?
Tôi cho rằng câu trả lời là không, vì vậy câu hỏi thực sự của tôi là 'tại sao'?
Bạn có biết chúng tôi đang nói chuyện trong bao lâu không? Tôi giả định có một, nhưng tôi đoán nó <0,5 giây, mà trong hầu hết các GUI tôi sẽ nói là chấp nhận được (tho một số có thể không đồng ý) Tôi giả định Control.Invoke không kiểm tra InvokeRequired chính nó vì lý do hiệu suất? – MattH
Ồ, chắc chắn <0.5s - mặc dù bạn có thể thời gian tất nhiên (ví dụ, 10000 cuộc gọi). –
Vì vậy, bạn đang nói rằng 'Invoke()' không tự động kiểm tra 'InvokeRequired' và nội tuyến thực hiện các đại biểu được thông qua chính nó? – binki