2013-10-18 12 views
7

Tôi đang cố gắng tìm ra mục đích của các chủ đề xuất hiện trong mỗi ứng dụng C# mới là gì. Tôi tạo ra một ứng dụng giao diện điều khiển mới với trống chức năng chính:Chủ đề mặc định trong ứng dụng giao diện điều khiển rất nhỏ (Visual Studio 2012)

static void Main(string[] args) 
{ 
} 

và đặt một break-point ở đầu của hàm, sau đó tôi nhìn vào các chủ đề cửa sổ:

Default Threads

Đôi khi nó cho thấy 8 chủ đề và đôi khi 7 chủ đề.

Bất cứ ai có thể giải thích mục đích của tất cả các chủ đề đó là gì và tại sao tôi cần chúng cho một dự án đơn giản như vậy?

+1

Vâng, .NET là một thời gian chạy được quản lý, do đó, nó có thể làm công cụ để làm cho mọi thứ tự động hoạt động. Ví dụ, bộ sưu tập nhà để xe. Điều đó chạy trên một chuỗi chuyên dụng. Một số chủ đề có thể là "chờ đợi" cho công việc để làm bởi vì họ thuộc về một hồ bơi thread. – vcsjones

Trả lời

6

Tóm lại, các chuỗi bổ sung này là GC, Finalizer, VS và Debugger có liên quan. Các liên kết dưới đây cung cấp một câu trả lời chi tiết hơn cho câu hỏi của bạn:

Why does this simple .NET console app have so many threads?

+0

Bạn có thể cho biết cái nào là GC và cái nào là Trình kết thúc? – Alon

+0

Và, Chủ đề có mức độ ưu tiên cao nhất là gì? – Alon

+0

GC là ưu tiên bình thường và Trình tổng hợp là cao nhất: http://stackoverflow.com/questions/830822/net-garbage-collector-what-is-its-thread-priority/919583#919583 –

2

Trước hết tôi nghĩ chúng ta cần phải hiểu là những gì đề?

Chủ đề:

Threading cho phép chương trình của bạn để thực hiện xử lý đồng thời để bạn có thể làm nhiều hơn là một hoạt động cùng một lúc. Ví dụ: bạn có thể tải một hình ảnh nặng vào ứng dụng của mình, thực hiện các tác vụ nền và tại thời điểm đó bạn có thể xử lý việc truyền trực tuyến tới các tệp.

Nếu bạn không sử dụng luồng - khi bạn tải hình ảnh vào ứng dụng thì giao diện người dùng của bạn bị kẹt để bạn không thể làm gì khác, chỉ đợi cho đến khi hình ảnh tải xong.

Vậy tại sao ứng dụng của chúng tôi bắt đầu ở 7-8 chủ đề?

Vì vậy, cho phép xem những chủ đề chúng ta có:

Theo mặc định, một chương trình C# có một thread. Chuỗi này thực thi mã trong chương trình bắt đầu và kết thúc bằng phương thức Main.

Bạn cũng có một bộ thu gom rác chịu trách nhiệm cho việc tiêu diệt đối tượng khi vòng đời của họ kết thúc.

Và còn một số chủ đề gỡ lỗi nữa.

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