Cập nhật:
Sau khi tôi đã trả lời câu hỏi này (! Lâu lắm rồi) tôi phát hiện ra rằng đó là không đúng sự thật rằng Nhiệm vụ sẽ luôn chạy đến hết - có một nhỏ, chúng ta hãy nói "góc" trường hợp, nơi công việc có thể không hoàn thành.
Lý do cho điều này là: Như tôi đã trả lời trước đây, Nhiệm vụ chủ yếu là chủ đề; nhưng họ là chủ đề nền. Các chủ đề nền được tự động hủy bỏ khi tất cả các chủ đề nền trước kết thúc. Vì vậy, nếu bạn không làm bất cứ điều gì với nhiệm vụ và chương trình kết thúc, có một cơ hội nhiệm vụ sẽ không hoàn thành.
Bạn phải luôn chờ đợi công việc. Bạn có thể tìm thêm thông tin trên excellent answer Jon gave me.
gốc:
công tác dự kiến sẽ ThreadPool, có nghĩa rằng họ là chủ yếu threads¹ (trên thực tế, họ đóng gói đề).
Từ Thread documentation:
Nó không phải là cần thiết để giữ một tham chiếu đến một đối tượng Chủ đề khi bạn đã bắt đầu thread. Các chủ đề tiếp tục thực hiện cho đến khi các thủ tục thread hoàn tất.
Vì vậy, không, không cần giữ lại tham chiếu đến nó.
Ngoài ra, documentation khẳng định rằng cách ưa thích để tạo ra một nhiệm vụ là để sử dụng nó của nhà máy:
Bạn cũng có thể sử dụng phương pháp StartNew để tạo ra và bắt đầu một nhiệm vụ trong một hoạt động. Đây là cách ưa thích để tạo ra và bắt đầu nhiệm vụ nếu tạo và lập kế hoạch không phải là tách ra (...)
Hy vọng nó giúp.
¹ Theo đó đến documentation:
Một nhiệm vụ đại diện cho một hoạt động không đồng bộ, và trong một số cách nó giống việc tạo ra một chủ đề hoặc ThreadPool hạng mục công trình mới, nhưng ở một mức trừu tượng cao hơn.
Nguồn
2010-05-06 17:11:32
Tôi đã tìm thấy một điều nhỏ về điều này sau một thời gian và tôi nghĩ rằng tôi muốn chia sẻ với bạn, vì lợi ích đầy đủ ... Xem cập nhật bên dưới. –