2012-05-03 32 views
15

Tôi đang cố gắng tìm hiểu xem có bao nhiêu chủ đề mà ứng dụng của tôi đang chạy để tạo biểu đồ trực tiếp về hiệu suất. Bạn có thể chỉ cho tôi đúng hướng hay cung cấp một ví dụ về mã không? Cảm ơn!Tìm hiểu số lượng ứng dụng mà ứng dụng của tôi đang chạy?

+0

Bạn có muốn biết có bao nhiêu chủ đề bạn đã tạo rõ ràng không? Hoặc bất kỳ chủ đề. NET có thể đã tạo ra thay cho bạn là tốt? –

+3

Làm cách nào biết được có bao nhiêu chủ đề tồn tại liên quan đến hiệu suất? Chắc chắn điều thú vị là những gì các chủ đề đang làm. –

+0

@ David Heffernan: Tôi cũng đang cố tìm cách để làm điều này. Chủ yếu là tôi đang tìm cách ghi lại có bao nhiêu luồng trong ứng dụng theo thời gian để phân tích cách chương trình xử lý thế hệ/phát hành luồng của nó và tôi đã hy vọng tìm một vần hoặc lý do tại sao số luồng (như được hiển thị trong tác vụ người quản lý) sẽ phát triển rất cao. Vì vậy, điều này có thể liên quan đến hiệu suất từ ​​điểm đứng đó. –

Trả lời

31

Bạn có thể có một cái nhìn tại Threads tài sản của quá trình hiện tại:

System.Diagnostics.Process.GetCurrentProcess().Threads 

Tất nhiên điều này bao gồm đề không được quản lý là tốt.

+0

có bao gồm các chủ đề đã kết thúc không? – clamp

+2

Chỉ định Assembly và namespace cho một thứ không được đưa vào mặc định trong một dự án C# sẽ làm cho câu trả lời hoàn chỉnh hơn. 'Process' nằm trong không gian tên' System.Diagnostics'. – ThunderGr

+0

@Darin Dimitrove có cách nào để tìm ra rằng 'Chuỗi nào thuộc về phần nào của chương trình?' – AminM

-2
private static int s_threadCount; 

private static void MyMethod() { 
    Interlocked.Increment(ref s_threadCount); 
    try { 
    ... 
    } finally { 
    Interlocked.Decrement(ref s_threadCount); 
    } 
} 
+4

Điều đó sẽ chỉ cho bạn biết số lượng chủ đề trong phương thức cụ thể đó, chứ không phải số lượng chủ đề cho toàn bộ quá trình. –

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