2012-09-13 30 views
47

Khi gỡ lỗi ứng dụng C# của tôi, tôi đã nhận thấy một số lượng lớn các câu sau: "Chủ đề - đã thoát với mã 0 (0x0)". Ứng dụng này tiếp tục hoạt động và không có ngoại lệ nào bị bắt/không được xử lý.Chủ đề đã thoát với mã 0 (0x0) mà không có ngoại lệ chưa được xử lý

Ứng dụng đang chạy trên Windows 7 64 bit và được gỡ rối với nền tảng x86.

+1

Bạn có chắc chắn đó là những chủ đề của bạn? Nếu vậy, bạn không mong đợi họ kết thúc? – SLaks

Trả lời

63

Đây chỉ là thông báo gỡ lỗi. Bạn có thể tắt tính năng đó bằng cách nhấp chuột phải vào cửa sổ đầu ra và bỏ chọn thông báo kết thúc chuỗi.

http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

Ngoài chương trình ra khỏi ứng dụng của bạn, Output cửa sổ thể hiển thị các thông tin về:

  • Modules trình gỡ lỗi đã nạp hoặc bốc dỡ.

  • Trường hợp ngoại lệ được ném.

  • Quy trình thoát.

  • Chủ đề thoát.

2

nếu ứng dụng của bạn sử dụng chuỗi trực tiếp hoặc gián tiếp (nghĩa là đằng sau khung cảnh như trong thư viện của bên thứ ba), hoàn toàn phổ biến là có chủ đề chấm dứt sau khi hoàn thành ... về cơ bản bạn mô tả ... trình gỡ lỗi hiển thị thông báo này ... bạn có thể định cấu hình trình gỡ lỗi để không hiển thị thông báo này nếu bạn không muốn ...

Nếu ở trên không giúp được thì vui lòng cung cấp thêm chi tiết vì tôi không biết chính xác vấn đề là bạn phải đối mặt ...

5

Vâng, một ứng dụng có thể có nhiều luồng chạy song song. Một số được chạy bởi bạn, coder, một số được chạy bởi các lớp khung công tác (đặc biệt nếu bạn đang ở trong môi trường GUI).

Khi một chuỗi đã hoàn thành nhiệm vụ của nó, nó thoát và dừng lại để tồn tại. Có nghĩa là không có gì đáng báo động trong điều này và bạn không nên quan tâm.

+0

Các chủ đề tôi đã thảo luận không phải của tôi (hoặc không thuộc về đơn của tôi). Tuy nhiên, ứng dụng của tôi cần phải kết nối với một máy chủ Linux AIX trả về với một số lượng lớn các quá trình không còn tồn tại. Tôi không có một ý tưởng rõ ràng về máy chủ này hoạt động (và đó là nhiệm vụ của nó) nhưng tôi cho rằng các chủ đề nói trên có thể ảnh hưởng đến hành vi máy chủ. – Gionata

+0

Vâng, có thể các chủ đề thực sự tác động đến ứng dụng của bạn, nhưng tin nhắn bạn nhận được cho bạn biết họ chấm dứt thành công. Vì vậy, bạn có thể thử và tìm lý do tại sao chúng được chạy (Debug menu => windows => threads), nhưng điều này là bình thường mà chúng kết thúc. – Kek

+0

Chúng kết thúc bình thường nhưng các tiến trình không còn tồn tại của máy chủ Linux có thể là tác dụng phụ của các chủ đề khung .net. Có lẽ ứng dụng có lỗi lập trình khác nhau trong việc thực hiện đa luồng. Có thể không? – Gionata

1

Khung tạo chủ đề để hỗ trợ mỗi cửa sổ bạn tạo ra, ví dụ như khi bạn tạo một Form và .Show() nó. Khi các cửa sổ đóng lại, các luồng được kết thúc (ví dụ, chúng thoát).

Đây là hành vi bình thường. Tuy nhiên, nếu ứng dụng đang tạo chủ đề và có nhiều thông báo thoát chuỗi tương ứng với các chủ đề này (có thể cho biết tên của chuỗi, bằng cách đặt tên riêng cho ứng dụng), thì có lẽ đây là dấu hiệu của sự cố với ứng dụng tạo chuỗi khi không nên, do lỗi logic của chương trình.

Nó sẽ là một sự theo dõi thú vị để có áp phích ban đầu cho chúng tôi biết những gì anh ta phát hiện về các vấn đề với máy chủ bị treo. Tôi có cảm giác nó sẽ không liên quan gì đến điều này ... nhưng thật khó để nói từ thông tin được đăng tải.

3

Để hoàn thành câu trả lời chấp nhận BlueM của, bạn có thể tắt nhật nó ở đây:

Tools> Options> Debugging> Output Settings Chung> Chủ đề Messages Exit: Tắt

+0

Câu trả lời được chấp nhận của BlueM thực sự có một giải pháp đơn giản hơn: _ "Bạn có thể tắt tính năng đó bằng cách nhấp chuột phải vào cửa sổ đầu ra và bỏ chọn thông báo kết thúc chuỗi" _ –

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