3

我有一个PSCmdlet用 C# 和 .NET 3.5 编写的,它调用在同一 .NET 文件中定义的一些其他命令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);
4

1 回答 1

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();
于 2014-04-03T14:32:34.390 回答