我有一个场景,可以通过GUI应用程序和IIS托管应用程序调用程序集(即其中的入口方法)。我想根据调用它的进程执行一些操作(如果GUI调用它,在IIS应用程序的情况下将打开一些其他表单,将跳过此步骤。)
那么,有什么方法可以检测哪个进程(我知道进程的确切名称,在这两种情况下)都是在entry方法中调用程序集?
我想执行类似下面的内容
if (processName == "wpw3.exe")
{
LogWindow log = new LogWindow();
log.Show();
}
if (processName == "GUIApplication.exe")
{
WriteToLogFile(LogData);
}
答案 0 :(得分: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);
}
不仅是程序集,还可以获取文件名,行等。