最近、TopShelf を発見しました。私が読んだすべてのものから、それはとてもクールに見えます。唯一の問題は、私がそれを使用できなかったことです。私は何かを逃したに違いない。以下は私のコードです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;
namespace TestTopShelf {
public class FooBar {
public FooBar() {
}
public void Start() { }
public void Stop() { }
}
public class Program {
public static void Main() {
HostFactory.Run(x => {
x.Service<FooBar>( s => {
});
});
}
}
}
少し不完全であることがわかります。ConstructUsing、WhenStarted、および WhenStopped の 's' オブジェクトのプロパティを設定しようとすると、Visual Studio が正しい型を推測しません。私はラムダ式が初めてで、TopShelf も初めてなので、自分が何をしているのかわかりません。
私は、TopShelf ドキュメントのこのページを使用して作業を開始しています。かなり簡単に見えるので、何を見逃したのかわかりません。
更新されたコード
using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;
namespace KeithLink.Svc.Windows.OrderService2 {
class FooBar {
public FooBar() { }
public void Start() { }
public void Stop() { }
}
class Program {
static void Main(string[] args) {
HostFactory.Run(x => {
x.Service<FooBar>(s => {
s.ConstructUsing(name => new OrderService());
s.WhenStarted(os => os.Start());
s.WhenStopped(os => os.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("some service description");
x.SetServiceName("ServiceName");
x.SetDisplayName("Service Display Name");
});
}
}
}