私はC#4.0(winforms)で作業しています.10以上のスレッドでアプリケーションをデバッグしています。デバッグ中に、どのスレッドをデバッグすべきかを選択するためのドロップダウンがあります(ブレークポイントの間のみアクセス可能)。Visual Studioデバッガでスレッドに名前を付けることはできますか?
これらは「Win32のスレッド」、「ワーカースレッド」、「RPCコールバックスレッド」などと表示さ...
私は自分のコード内からそれらに名前を付けるのが大好きです。私はすべてのスレッドをバックグラウンドワーカーで実行しています。
編集:私の解決策。これは100%の時間では機能しないかもしれませんが、正確に必要なことをします。場合によってはラベルが間違っている場合は、私が作業しているコンテキストでOKです。すべてのBackgroundWorkerのの*の_doworkイベントで
、私は次のコード行を置く:どちらが
ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name));
...
public static void TrySetCurrentThreadName(String threadName)
{
if (System.Threading.Thread.CurrentThread.Name == null)
{
System.Threading.Thread.CurrentThread.Name = threadName;
}
}
API Windowsの['CreateThread'](http://msdn.microsoft.com/en-us/library/ms682453.aspx)では名前を使用できません。 .NETの名前は単にプレースホルダーであると仮定します。もしそうであれば、私はスレッドの名前を変更するためのユースケースを考えることはできませんが、読み書きが可能でした。 – Abel
私はすべてのマルチスレッドを実行するためにBackgroundWorkersを使用しているので、それは安全なアクションですか?私はそれが必要に応じてスレッドを再利用するかもしれないと仮定します。 – greggorob64
@Abel:.NETスレッドは必ずしもWinAPIスレッドの周りに薄いラッパーであるとは限りません。 – Vlad