Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c++/cli?_C#_Powershell_C++ Cli_Runspace - Fatal编程技术网

C# 如何在c++/cli?

C# 如何在c++/cli?,c#,powershell,c++-cli,runspace,C#,Powershell,C++ Cli,Runspace,我一直在使用c++/cli开发一个应用程序,该应用程序使用powershell与exchange online进行交互。我使用了WSManConnectionInfo类来创建连接和运行空间 在Exchange online中,运行空间的数量限制为3 我已经开发了一个代码,目前正在创建一个运行空间 如果创建的运行空间由于超时而过期,我必须通知用户。因此我考虑在runspace类中使用runspace.StateChanged事件 我在谷歌上搜索过,但找不到任何实现它的示例代码 有人能帮我用这个方法

我一直在使用
c++/cli
开发一个应用程序,该应用程序使用powershell与exchange online进行交互。我使用了
WSManConnectionInfo
类来创建连接和运行空间

在Exchange online中,运行空间的数量限制为3

我已经开发了一个代码,目前正在创建一个运行空间

如果创建的运行空间由于超时而过期,我必须通知用户。因此我考虑在
runspace
类中使用
runspace.StateChanged
事件

我在谷歌上搜索过,但找不到任何实现它的示例代码


有人能帮我用这个方法吗?也可以提出任何其他方法。提前谢谢

我不熟悉运行空间类中的事件。但是您可以尝试存储创建运行空间的时间,如果超时,则删除它

我使用过运行空间并围绕它构建了应用程序,但我不相信我使用过这个特定事件。但如果我只想检查我的运行空间对象的状态,这就是我通常做的

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


然而,我发现很难相信这个活动会是最好的方式。
运行空间可以有多个状态。即使您成功地获得了
状态更改的
事件处理程序
,您仍然需要验证它是超时还是其他超时。这将使您回到上面的代码,您必须检查
状态

我尝试过,但与存储时间相比,事件似乎是一种更好的方法。您是对的,但事件会自动触发,而您的代码不必在事件处理程序中使用您的代码。因为我是在事件处理程序中编写的一个事件,我不需要显式地调用它