Xin xin chào các bạn, bài viết từ bây giờ mình sẻ liên tục trả lời các bạn về Invoke trong xây dựng C#, Winsize.

Bạn đang xem: Invoke c# là gì

lúc các bạn lập trình sẵn bất động đậy bộ, sử dụng Task, thì các bạn thường xuyên xuất xắc chạm chán về phương thức Invoke.

quý khách vẫn xem: Invoke c# là gì

Vậy Invoke C# là gì?

khi ứng dụng của khách hàng chạy, tất cả một thread được tạo thành để chạy hàm Main().

Ở trên hàm Main() có

*

Đó là thread bao gồm (main-thread).

Nếu công tác của chúng ta có nhiều thread triển khai những tác vụ giải pháp xử lý khác và những thread này đề nghị áp dụng tài nguyên từ bỏ thread bao gồm thì bạn phải nên tới Invoke.

Xem thêm: Mua Radio Ở Đâu ? Mua Đài Radio Ở Đâu Uy Tín

Thực ra, chúng ta có thể đặt trực thuộc tính CheckForIllegalCrossThreadCalls = false; mang đến khung (hoặc control) và áp dụng các tài ngulặng từ thread khác một cách thoải mái và dễ chịu.

Nhưng điều đó, công tác của các bạn sẽ rơi vào tâm trạng ko an toàn (unsafe) với sẽ bị crash bất cứ cơ hội nào khi mà lại những thread ttinh quái chấp tài nguyên với nhau.C# hỗ trợ 1 giải pháp an toàn rộng đó là Invoke. Khi bạn hotline cách tiến hành này của một size (hoặc control) từ 1 thread không giống, form (control) kia có khả năng sẽ bị loông chồng, chỉ được cho phép thread vẫn Hotline nó truy cập. khi thread này kết thúc tác vụ của nó, size (control) lại được giải pchờ mang lại thread khác Điện thoại tư vấn.

do đó, các thread sẽ được đồng hóa cùng nhau và công tác của các bạn sẽ ko bị crash. Đó điện thoại tư vấn là thread-safe.Có đông đảo control ko yên cầu Invoke để thực hiện thread-safe. Nghĩa là nó rất có thể được truy cập một cách thẳng ko qua Invoke.

Thuộc tính InvokeRequired sẽ cho biết một control tất cả tận hưởng Invoke Lúc điện thoại tư vấn tuyệt ko ?- Lúc Điện thoại tư vấn Invoke, bạn phải truyền đến nó 1 delegate. quý khách rất có thể thực hiện delegate MethodInvoker bao gồm sẵn của C#.- VD : Cmùi hương trình của chính mình có một listbox, bản thân sẽ khởi tạo 1 thread mới.

Thread này còn có trọng trách thêm những số từ bỏ 1-9999 vào listbox, mặt khác cập nhật quy trình qua một progressbar.

private void btnCreateNumber_Click(object sender, EventArgs e) kinhdoanhspa.vnr(); // Tạo cùng chạy thread Thread thrGenerating = new Thread(new ThreadStart(DoWork)); kinhdoanhspa.vnt(); private void DoWork() for (int i = 1; i kinhdoanhspa.vn(i); kinhdoanhspa.vnndex = kinhdoanhspa.vn – 1; )); // Cập nhật quy trình tiến độ qua progress bar kinhdoanhspa.vnke(new Action(() => kinhdoanhspa.vn = (i * 100 / 9999); )); kinhdoanhspa.vn(“Finish!”); }