2011-09-20 18 views
6

C# 4.0 (winforms) 'da çalışıyorum, 10+ iş parçacığı içeren bir uygulamada hata ayıklama yapıyorum. Hata ayıklama yaparken, hangi parçacığın hata ayıklaması yapılacağını seçmek için bir aşağı açılır (yalnızca bir kesme noktasında erişilebilir).Visual Studio hata ayıklayıcıda bir iş parçacığı adlandırmak mümkün mü?

Bu "Win32 Konu", "İşçi İplik", "RPC Geri arama İplik", vb olarak gösterilir ...

benim kodu içinde onlara isim isteriz. Tüm iş parçacıklarımı arka plan çalışanları ile çalıştırıyorum.

Düzenle: çözümüm. Bu, zamanın% 100'ünde çalışmayabilir, ancak tam olarak ihtiyaç duyduğu şeyi yapar. Eğer etiketler yanlış ise, bu durumda çalışıyorum bağlamında sorun yok.

public static void TrySetCurrentThreadName(String threadName) 
    { 
    if (System.Threading.Thread.CurrentThread.Name == null) 
    { 
     System.Threading.Thread.CurrentThread.Name = threadName; 
    } 
    } 

cevap

8

Iyi Thread.Name özelliğini kullanabilirsiniz ... olduğu

ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name)); 

ama şunları yapabilirsiniz: Her backgroundworker en * _dowork etkinlikte

, ben kod aşağıdaki satırı koymak Sadece bir kez yaz - iş parçacığı oluşturduğunuzda, uygun bir ad verin. Windows

+0

API [ 'CreateThread'] (http://msdn.microsoft.com/en-us/library/ms682453.aspx) adları izin vermez. .NET'deki isimlerin sadece yer tutucu olduğunu mu sanıyorum? Eğer öyleyse, okuma/yazma yapmış olabilirler (yine de bir iş parçacığının yeniden adlandırılması için bir kullanım durumu düşünemiyorum). – Abel

+0

Tüm multithreading'i çalıştırmak için BackgroundWorkers kullanıyorum, bu güvenli bir eylem mi? İpleri ihtiyaç duyduğu gibi yeniden kullanabileceğini varsayardım, bu yüzden sadece bir kez adlandırma kabul edilemez. – greggorob64

+0

@Abel: .NET konuları, WinAPI iş parçacıklarının etrafındaki ince sarmalayıcılar değildir. – Vlad

1
Thread.CurrentThread.Name = "Give your name here"; 
+2

Ad zaten ayarlandığında 'System.InvalidOperationException 'atar. – Abel

+0

Haklısınız, isim sadece bir kez ayarlanabilir. – Maxim

İlgili konular