2016-06-29 9 views
0

私は、GUIアプリケーションとIISのホストされたアプリケーションの両方からアセンブリ(つまり、その内部のエントリメソッド)を呼び出すことができるシナリオを持っています。どのプロセスがそれを呼び出しているかに応じていくつかのアクションを実行したい(GUIアプリケーションが呼び出されていても、IISアプリケーションの場合には他のフォームが開き、このステップはスキップされます)。アセンブリ内で呼び出しプロセス名を取得する方法は?

したがって、どちらのプロセス(どちらの場合も、プロセスの正確な名前がわかっています)がエントリメソッド内でアセンブリを呼び出しているかどうかを検出する方法はありますか?

私はそれは簡単です

 if (processName == "wpw3.exe") 
     { 
      LogWindow log = new LogWindow(); 
      log.Show(); 
     } 
     if (processName == "GUIApplication.exe") 
     { 
      WriteToLogFile(LogData); 
     } 
+0

メイビーは、これはあなたが検索しているソリューションです http://stackoverflow.com/questions/394816/how-to- get-parent-process-in-managed-way-managed-way- –

+1

プロセス名に応じてロジックを構築することは、私の匂いになります。なぜあなたのコードを実装しないで、いくつかの設定(プログラムや宣言、設定ファイルを使用)を許可し、いくつかの依存関係をスキップ/追加しますか?ホストプロセス名が変わるとどうなるでしょうか? – Dennis

+0

@Dennis:この場合、構成は良い考えではありません。なぜなら両方のプロセスがアセンブリに一緒にアクセスでき、構成できないからです。 –

答えて

1

以下のようなものを実行したいです。ちょうどStackTraceを使用してください。

var stackTrace = new StackTrace(); 

var assemblies = stackTrace.GetFrames().Select(t => 
{ 
    var method = t.GetMethod(); 
    return method.DeclaringType.Assembly; 
}); 

foreach (var assembly in assemblies) 
{ 
    Console.WriteLine(assembly.FullName); 
} 

だけでなく、アセンブリが、あなたはまた、ファイル名を取得することができ、ラインなど

関連する問題