我一直在用c++/cli开发一个应用程序,它可以使用powershell与exchange进行在线交互。我使用WSManConnectionInfo类创建连接和创建运行空间。
在Exchange中,运行空间的数量限制为3。
我已经开发了一个代码,它目前创建了一个运行空间。
如果创建的运行空间由于超时而过期,我必须通知我想在user.So类中使用Runspace.StateChanged事件的Runspace。
我已经搜索过,但我找不到任何示例代码来实现它。
有人能帮我这个方法或任何其他的方法也可以提出。提前谢谢!!
发布于 2018-07-26 06:09:33
我不熟悉Runspace类中的事件。但是,您可以尝试存储创建运行空间的时间,并在超时发生时删除它。
发布于 2018-07-26 06:59:00
我使用了运行空间,并围绕它构建了应用程序,但我不相信我使用了这个特定的事件。但是,如果我要检查的只是运行空间对象的状态,这就是我通常所做的。
if ($myThread.Runspace.InvocationStateInfo.State -eq "Completed")
{
#Code to process further here
#Note that completed only means executed. Does not mean it did not raise errors.
#For that you can use the Runspace.HadErrors property
if ($myThread.Runspace.HadErrors -eq $true)
{
$ErrMsg = $myThread.Runspace.Streams.Error.Exception
}
else
{
#Success Code here
}
}
else
{
$FailureReason = $myThread.Runspace.InvocationStateInfo.Reason
}$myThread是我的RunspaceObject。
然而,我很难相信这一事件将是最好的方式。一个runspace可以有多个状态。即使您设法获得了eventhandler for StateChanged,您仍然必须验证它是超时还是另一个超时。这将使您回到上面的代码,在那里您必须检查state。
https://stackoverflow.com/questions/51531866
复制相似问题