İş parçacığı, işlenmemiş istisna olmaksızın kod 0 (0x0) ile çıktı


97

C # uygulamamda hata ayıklarken aşağıdaki cümlenin çok sayıda geçtiğini fark ettim:

İş parçacığı - 0 (0x0) koduyla çıktı.

Uygulama çalışmaya devam eder ve hiçbir istisna yakalanmaz / ele alınmaz.

Uygulama Windows 7 64bit üzerinde çalışıyor ve x86 platformu ile hata ayıklanıyor.


1
Bunların sizin konularınız olduğundan emin misiniz? Eğer öyleyse, bitmelerini beklemiyor musunuz?
SLaks

Yanıtlar:


142

Bu sadece hata ayıklama mesajıdır. Çıktı penceresine sağ tıklayarak ve işareti kaldırarak bunu kapatabilirsiniz Thread Exit Messages.

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

Uygulamanızdan programlamanın yanı sıra, Çıktı penceresi aşağıdakilerle ilgili bilgileri görüntüleyebilir:

  • Hata ayıklayıcının yüklediği veya kaldırdığı modüller.

  • Atılan istisnalar.

  • Çıkış yapan işlemler.

  • Çıkan konular.


10

Bir uygulamanın paralel olarak çalışan birçok iş parçacığı olabilir. Bazıları sizin tarafınızdan, kodlayıcı tarafından çalıştırılır, bazıları çerçeve sınıfları tarafından çalıştırılır (özellikle bir GUI ortamındaysanız).

Bir iş parçacığı görevini bitirdiğinde, var olmaktan çıkar ve durur. Yani bunda endişe verici hiçbir şey yok ve umursamamalısın.


Tartıştığım konular benim değil (veya başvuruma ait değil). Ancak uygulamamın, büyük miktarda geçersiz işlemlerle dönen bir Linux AIX sunucusuna bağlanması gerekiyor. Bu sunucunun çalışması hakkında net bir fikrim yok (ve görevleri hangileri), ancak yukarıda belirtilen iş parçacıklarının sunucu davranışını etkileyebileceğini tahmin ediyorum.
Gionata

Belki ileti dizileri gerçekten uygulamanızı etkiliyor, ancak aldığınız mesaj size başarılı bir şekilde sonlandırıldıklarını söylüyor. Böylece neden çalıştırıldıklarını bulmaya çalışabilirsiniz (Hata Ayıklama menüsü => windows => iş parçacıkları), ancak bu normaldir.
Kek

Normal olarak sonlanırlar, ancak Linux sunucusunun geçersiz süreçleri .net çerçeve iş parçacıklarının bir yan etkisi olabilir. Belki de uygulamanın çoklu okuma uygulamasında çeşitli programlama hataları vardır. Mümkün mü?
Gionata

Bilmiyorum. Bu linuw sunucusu .NET mi çalıştırıyor? Mono kullanıyor musunuz? Aslında sorunun ne? Geçersiz süreçler?
Kek

Evet, dufunct süreçleri Linux Sunucusunu çökertiyor.
Gionata

7

BlueM'nin kabul edilen cevabını tamamlamak için buradan devre dışı bırakabilirsiniz:

Araçlar> Seçenekler> Hata Ayıklama> Genel Çıktı Ayarları> İş Parçacığı Çıkış Mesajları: Kapalı


5
BlueM'nin kabul ettiği cevabın aslında daha basit bir çözümü var: "Çıktı penceresine sağ tıklayarak bunu kapatabilir ve iş parçacığı bitti mesajının işaretini
kaldırabilirsiniz

5

uygulamanız doğrudan veya dolaylı olarak iş parçacıkları kullanıyorsa (yani, bir 3. taraf kitaplığında olduğu gibi sahne arkasında) iş parçacıklarının tamamlandıktan sonra sonlandırılması kesinlikle yaygındır ... temelde sizin açıkladığınız şeydir ... hata ayıklayıcı bu mesajı gösterir ... istemiyorsanız hata ayıklayıcıyı bu mesajı görüntülemeyecek şekilde yapılandırabilirsiniz ...

Yukarıdakiler yardımcı olmazsa, o zaman lütfen daha fazla ayrıntı sağlayın çünkü tam olarak karşılaştığınız sorunun ne olduğundan emin değilim ...


1

Çerçeve, oluşturduğunuz her pencereyi desteklemek için evreler oluşturur, örneğin bir Form ve .Show () oluşturduğunuzda olduğu gibi. Pencereler kapandığında, diziler sonlandırılır (yani çıkarlar).

Bu normal bir davranıştır. Bununla birlikte, uygulama iş parçacıkları oluşturuyorsa ve bu iş parçacıklarına karşılık gelen çok sayıda iş parçacığı çıkış mesajı varsa (uygulamada onlara farklı adlar vererek, muhtemelen iş parçacığının adlarından anlaşılabilir), o zaman bu belki bir sorunun göstergesidir. bir program mantık hatası nedeniyle uygulama, olmaması gerektiği halde iş parçacıkları oluşturuyor.

Orijinal posterin, sunucunun çökmesiyle ilgili problemlerle ilgili ne keşfettiğini bize bildirmesi ilginç bir takip olurdu. Bununla bir ilgisi olmayacağına dair bir his var ... ama yayınlanan bilgilerden söylemek zor.


1

Linq sorgularının yürütülmesi fazladan iş parçacığı oluşturabilir. Hemen pencerede Linq sorgu koleksiyonunu kullanan kodu yürütmeye çalıştığımda, hata ayıklayıcı için yeterli iş parçacığı olmadığı için genellikle çalıştırmayı reddediyor.

Diğerlerinin de söylediği gibi, iş parçacıklarının bittikten sonra çıkması tamamen normaldir.


-1

Ben de bu sorunla karşılaştım ve çözüm şu:

  1. Solution Explore'u açın
  2. Program.cs dosyasına çift tıklayın

Bu kodu tekrar ekledim ve programım doğru çalıştı:

Application.Run(new PayrollSystem()); 
//File name this code removed by me accidentally.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.