我有一个用C#和.NET 3.5编写的PSCmdlet
,它调用了在同一Cmdlet
内定义的一些其他命令。
其中一个命令启动了我的SharePoint网站上的完全爬网,并等待它完成。乐观地说,这些需要5-10分钟才能完成。
由于此命令需要很长时间且PowerShell
类同步运行它们,因此控制台将在此期间冻结。
没关系,但几分钟后,Windows会认为它已经崩溃并炸毁了PowerShell
控制台。我该如何防止这种情况发生?
以下是我正在运行命令的方法:
PowerShell ps = PowerShell.Create();
ps.Commands.AddCommand("Start-CrawlAndRunSearchCatalog").AddParameter("configFilePath", this.configFilePath);
foreach (string str in ps.AddCommand("Out-String").Invoke<string>())
this.WriteObject(str);
答案 0 :(得分:0)
也许这个?
var thread = new Thread(() =>
{
PowerShell ps = PowerShell.Create();
ps.Commands.AddCommand("Start-CrawlAndRunSearchCatalog").AddParameter("configFilePath", this.configFilePath);
foreach (string str in ps.AddCommand("Out-String").Invoke<string>())
this.WriteObject(str);
});
thread.Start();
thread.Join();