gpt4 book ai didi

c# - 等待来自 PowerShell 的异步 C# 方法

转载 作者:太空狗 更新时间:2023-10-29 18:11:40 25 4
gpt4 key购买 nike

我想使用静态成员访问器从 PowerShell 调用静态异步 C# 方法,例如:

PowerShell

function CallMyStaticMethod([parameter(Mandatory=$true)][string]$myParam)
{
...
[MyNamespace.MyClass]::MyStaticMethod($myParam)
...
}

C#

public static async Task MyStaticMethod(string myParam)
{
...
await ...
...
}

由于我的 C# 方法是异步的,所以如果没有来自 PowerShell 的某种“等待”调用,我的 C# 方法是否可以正常运行?

最佳答案

它自己会很好地运行,但如果你想等待它完成,你可以使用它

$null = [MyNamespace.MyClass]::MyStaticMethod($myParam).GetAwaiter().GetResult()

这将解开 AggregateException 的包装,如果您改用 $task.Result 之类的东西,则会抛出该异常。

然而,这将阻塞直到它完成,这将阻止 CTRL + C 正确停止管道。您可以等待它完成,同时仍然像这样遵守管道停止

 $task = [MyNamespace.MyClass]::MyStaticMethod($myParam)
while (-not $task.AsyncWaitHandle.WaitOne(200)) { }
$null = $task.GetAwaiter().GetResult()

如果异步方法确实返回了一些东西,删除 $null =

关于c# - 等待来自 PowerShell 的异步 C# 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51218257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com