2011-01-27 9 views
2

私はResharperでNUnitを使用しています。私が1つのテストを終えると、JetBrain:Resharperプロセスはまだ動作しています。スレッドを書き出すと、まだスレッドが動作しています。スレッドの種類を調べることはできますか?私は現在、次のコードを使用していますが、それは私にスレッドIDを与えるだけです。私はスレッド名が必要です。上記のコードからテストを終了してもまだ動作しているスレッドを追跡するにはどうすればよいですか?

Process[] allProcs = Process.GetProcesses(); 

foreach (Process proc in allProcs) 
{ 
    if (proc.ProcessName.StartsWith("Jet")) 
    { 
     ProcessThreadCollection myThreads = proc.Threads; 
     Console.WriteLine("process: {0}, id: {1}", proc.ProcessName, proc.Id); 

     foreach (ProcessThread pt in myThreads) 
     { 
      Console.WriteLine(" thread: {0}", pt.Id); 
      Console.WriteLine(" started: {0}", pt.StartTime.ToString()); 
      Console.WriteLine(" CPU time: {0}", pt.TotalProcessorTime); 
      Console.WriteLine(" priority: {0}", pt.BasePriority); 
      Console.WriteLine(" thread state: {0}", pt.ThreadState.ToString()); 
     } 
    } 
} 

出力:

process: JetBrains.ReSharper.TaskRunner.MSIL, id: 1884 

thread: 3600 
started: 27.1.2011 13.26.55 
CPU time: 00:00:05.8812377 
priority: 8 
thread state: Running 

答えて

3

ReSharperのテストランナープロセスがまだある場合、それにデバッガをアタッチし、現在実行中のスレッドを見て、「すべてを壊します」。

はどのように実行中のプロセスにVSデバッガをアタッチする

次の番組を処理するためのVisual Studioデバッガをアタッチします。アタッチするプロセスを選択するときは、ReSharperテストランナーを選択します。

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

ブレークは、このオプションを選択するすべての

は、すべての実行中のスレッドを一時停止し、あなたがそれらを検査することができます。

メニュー - >デバッグ - >ブレイクすべて

表示スレッド

は「スレッド」ウィンドウには、デバッグされている現在のプロセスのすべてのスレッドのリストを与えます。

メニュー - >デバッグ - >ウィンドウ - >スレッド

もっと詳しく "スレッド" ウィンドウ上:

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

+0

あなたはVS2010でそれを行う方法を具体的にすることができ? – Simon

+0

@サイモン問題はありません。デバッガをプロセスに接続するのに慣れていますか? –

+0

@chibacity:デバッガをどのように処理するのか分かりませんし、 "すべてを壊す"ということは何を意味しますか? – Simon