2010-06-18 19 views

Trả lời

1

Đó không phải là cách nó hoạt động. Bất kỳ chuỗi nào trong chương trình được quản lý đều có thể thực thi mã được quản lý, bao gồm cả chuỗi được bắt đầu dưới dạng chuỗi không được quản lý. Mà hầu hết là, chủ đề chính và bất kỳ thread threadpool bắt đầu cuộc sống thực hiện hoàn toàn không được quản lý mã. Nó thunks thành mã được quản lý mặc dù các loại gateway được cung cấp bởi Marshal.GetDelegateForFunctionPointer().

Xem hàng tá chuỗi (nếu không hoạt động) không phải là bất thường. Họ thường là chủ đề threadpool và chủ đề bắt đầu bởi các máy chủ COM. .NET thiếu hệ thống ống nước bạn cần sử dụng Thread.ManagedThreadId trên các chủ đề đó. Đó là cố ý, một chuỗi .NET hợp lý không phải là một chuỗi hệ điều hành vật lý. Mặc dù không có máy chủ lưu trữ trong sử dụng hiện tại, nơi đó không phải là trường hợp.

Bạn sẽ phải tránh phải đặt câu hỏi.

+0

cảm ơn vì đã cho tôi biết. tuy nhiên tôi muốn có câu trả lời. Làm cách nào để tìm ra số lượng chuỗi được quản lý được tạo trong ứng dụng của tôi bất kỳ lúc nào? –

+0

Bạn tạo chúng, đếm chúng. –

+0

thats điểm! Tôi sử dụng API của bên thứ ba và họ không muốn tiết lộ chi tiết, cũng có thể sử dụng hồ bơi luồng hoặc phần mềm khác, v.v. –

1

Tôi chưa kiểm tra xem có thể sử dụng giao diện gỡ lỗi hay không nhưng vì VS hiển thị các chuỗi được quản lý trong trình gỡ rối của nó, bạn cũng có thể lấy chúng trong máy của bạn.

Trong .NET, việc viết trình gỡ lỗi dễ dàng hơn nhiều so với bạn mong đợi. Việc triển khai trình gỡ lỗi cơ bản bao gồm việc triển khai giao diện ICorDebug.

Có một mẫu từ Microsoft: Managed Debugger Sample

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