假启动和终止过程

时间:2019-01-24 20:15:51

标签: f# .net-core f#-fake

我有一个相当简单的用例:

  • 开始使用Swagger中间件为AspNetCore应用提供服务的过程,以生成swagger.json文件。
  • 启动一个读取上述swagger.json并生成C#REST客户端的过程
  • 等待直到生成C#Rest客户端,然后关闭AspNetCore应用。

当前我的代码如下:

try
    let createProc =
        CreateProcess.fromRawCommand "dotnet" ["run"; "--project"; "FakeProcMvc"]
        |> CreateProcess.addOnStarted 
            (fun _ ->  
                CreateProcess.fromRawCommand "dotnet" ["run"; "--project"; "FakeProcWriteFile"]
                |> Proc.run
                |> ignore
            )
    let procTask =
        createProc
        |> Proc.start

    let tokenSource = new CancellationTokenSource()
    procTask.Wait(tokenSource.Token)
    tokenSource.Cancel()
with
| Failure msg -> printfn "caught: %A" msg

但这显然不是很正确。文件编写(C#客户端)工作正常,但是我无法停止AspNetCore应用。

取消部分没有任何作用,而且我不知道如何获得对实际过程的某种引用,因此我可以使用Process.kill或类似的东西。

0 个答案:

没有答案