我已经安装了 Topshelf.FSharp 包,这里有一个如何使用它的示例:
https://gist.github.com/haf/4252121
该示例的一部分定义了一个“Svc”(服务)类,如下所示:
type Svc() =
member x.Start() =
printfn "Started"
member x.Stop() =
printfn "Stopped"
使用 Owin selfhost,您可以调用各种静态重载之一IDisposable WebApp.Start(...)
来启动 Web 服务器,然后将其处理以停止它。在C#中,如果要结合Topshelf和Owin,可以在调用Start()时将Start()的IDisposable结果存储在Svc类的私有本地字段中,然后在Stop()中对其调用Dispose() ) 方法。
在 F# 中,您可以使用“显式字段”( http://msdn.microsoft.com/en-us/library/dd469494.aspx )声明 IDisposable 类型的统一字段,但这似乎有些尴尬,有没有更好的方法?