2009-08-25 60 views
9

Sự khác nhau giữa chủ đề nền và nền trước là gì?Trong CLR, sự khác biệt giữa chủ đề nền và nền trước là gì?

+0

Làm rõ: C# không có khái niệm về chủ đề nền và nền trước. Sự phân biệt mà các tình huống nhất định tạo ra về một luồng được thực hiện ở mức CLR/COM. – JaredPar

+5

C# cũng không có khái niệm về một con hươu cao cổ, nhưng bạn có thể tạo ra một lớp học với một tài sản được gọi là Giraffe. IsBackground là thuộc tính của một đối tượng trong khung công tác. Hãy nhớ rằng, C# _the language_ không phải là .NET framework. Nó chỉ là một ngôn ngữ lập trình. –

Trả lời

20

Từ MSDN:

đề Bối cảnh là giống hệt nhau để đề foreground với một ngoại lệ: một sợi nền không giữ môi trường thực thi quản lý chạy.

+0

Bạn có nghĩa là nó pháo ngăn chặn một quá trình hiện tại từ chấm dứt ... – Guffa

+0

@ Guffa: Tôi không hiểu. Bạn đang quibbling trên một giải thích của tài liệu MSDN? – Amy

+0

Không có ưu tiên chuyển đổi ngữ cảnh thấp hơn? –

15

Xem this page:

  • đề Foreground có khả năng ngăn chặn các ứng dụng hiện tại từ chấm dứt. CLR sẽ không tắt một ứng dụng (mà là để nói, dỡ bỏ các AppDomain lưu trữ) cho đến khi tất cả các chủ đề tiền cảnh đã kết thúc.

  • Chủ đề nền (đôi khi được gọi là chủ đề daemon) được CLR xem như đường dẫn có thể thực thi có thể bỏ qua tại bất kỳ thời điểm nào (ngay cả khi chúng hiện đang chuyển sang một số đơn vị công việc). Do đó, nếu tất cả các luồng nền trước đã chấm dứt, bất kỳ và tất cả các chủ đề nền sẽ tự động bị chết khi miền ứng dụng tải xuống.

+0

khi mọi người nên sử dụng chủ đề nền ..... đưa ra một ví dụ điển hình. – Mou

4

Theo mặc định, chủ đề là chủ đề foreground, có nghĩa là họ tiếp tục ứng dụng còn sống càng lâu càng bất kỳ một trong số họ đang chạy. C# cũng hỗ trợ các chủ đề nền, không giữ cho ứng dụng hoạt động độc lập - chấm dứt ngay lập tức khi tất cả các chủ đề nền trước đã kết thúc.

0

Nếu bất kỳ chủ đề nền trước hoặc nền nào chấm dứt, ứng dụng sẽ chết ngay lập tức. Có thể thay đổi chủ đề từ nền trước sang nền và ngược lại bất kỳ lúc nào trong suốt thời gian của ứng dụng. CLR tạo hai loại luồng để hỗ trợ AppDomain tốt hơn. CLR sẽ buộc phải kết thúc bất kỳ chủ đề nền nào đang chạy nếu chuỗi tiền cảnh chấm dứt. Bất kỳ chủ đề nào được tạo bởi mã gốc nhập vào môi trường thực thi được quản lý đều được đánh dấu làm chủ đề nền.

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