[英]How to get the calling process name inside an assembly?
我有一種方案,可以通過GUI應用程序和IIS托管應用程序調用程序集(即其中的輸入方法)。 我想根據調用哪個進程來執行一些操作(例如,如果GUI正在調用它,則將打開某些其他形式,而在IIS應用程序的情況下,將跳過此步驟)。
那么,有什么方法可以檢測哪個進程(在兩種情況下我都知道該進程的確切名稱)在entry方法中調用程序集?
我想執行以下操作
if (processName == "wpw3.exe")
{
LogWindow log = new LogWindow();
log.Show();
}
if (processName == "GUIApplication.exe")
{
WriteToLogFile(LogData);
}
這很容易。 只需使用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);
}
不僅程序集,還可以獲取文件名,行等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.