我正在玩异步编程,并且想知道是否存在可以获取类型值'T并将其转换为类型的函数Async<'T>,类似于C#Task.FromResult,它可以获取类型的值TResult并将其转换为Task<TResult>可以等待的类型.
如果F#中不存在这样的功能,是否可以创建它?我可以通过使用Async.AwaitTask和Task.FromResult来模拟这个,但是我可以通过仅使用Async来实现吗?
从本质上讲,我希望能够做到这样的事情:
let asyncValue = toAsync 3 // toAsync: 'T -> Async<'T>
let foo = async{
let! value = asyncValue
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 powershell 中调用 Start-Job 。当我这样做时,它会生成一个带有以下参数的后台 powershell:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 5.0 -s -NoLogo -NoProfile -EncodedCommand [encoded command I want to run in base64]
Run Code Online (Sandbox Code Playgroud)
但是,无论我发送什么命令,powershell 命令似乎都永远不会完成。
我尝试生成一个 powershell 实例,如下所示:
powershell.exe -s
Run Code Online (Sandbox Code Playgroud)
这似乎也创建了一个似乎冻结的实例,没有执行或执行任何操作。在网上查找,我似乎找不到任何对 -s 参数的引用。
有谁知道它的用途或如何摆脱它以便我的起始工作正常工作?
编辑: -s 可能是 -sta 的简写,但我的命令不会使用 -sta 冻结,但会使用 -s 冻结。
Edit2:我后来发现 -s 是 -ServerMode 的简写,显然是旧版 Powershell 2.0 选项。我不知道为什么在使用 Start-Job 时添加它。
Edit3:我使用的命令是:
$deploymentsJobs += Start-Job -InitializationScript { SomeSmallFunction } (AnotherFunction) -ArgumentList $arg1, $arg2, $arg3}
Run Code Online (Sandbox Code Playgroud)