问题:
我正在尝试编写一个Powershell脚本,该脚本将在用.NET编写的DLL中执行静态方法。我能够执行该方法,但在成功执行该方法后,Powershell几乎立即关闭。
我认为这是因为我正在执行的特定方法产生新线程来执行某些异步操作?
我已经测试过,看看额外的线程是否在原始的Powershell会话中被启动了,他们确实如此。既然如此,我的想法是,Powershell应该跟踪DLL生成的任何线程,并且应该等到该过程完成。
我是Powershell脚本的新手,可能会遗漏一些东西。我现在已经磨了一段时间了,任何帮助都会非常感激。
提前致谢。
以下是我的代码示例:
[string]$DLLPathStr = ("C:\test.dll");
Add-Type -Path $DLLPathStr;
[Reflection.Assembly]::LoadFile($DLLPathStr);
[Namespace.Class]::StaticMethod(10); #Spawns Ten Send Email Processes.
其他信息:
在DLL中用于创建线程的类是Thread / Threadstart。
.NET代码示例:
public int Foo()
{
ThreadStart ts = new ThreadStart(Bar);
Thread wt = new Thread(ts);
wt.Start();
return 1;
}
private void Bar()
{
//...do something that takes a minute or two...
}
Powershell版本表:
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0,2.0,3.0,4.0}
PSRemotingProtocolVersion 2.2