我最近发现了 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 未推断出正确的类型。我是 lambda 表达式的新手,甚至是 TopShelf 的新手,所以我不确定我在做什么。
我在 TopShelf 文档中使用 this page 来帮助我入门。它看起来很简单,所以我不确定我错过了什么。
更新代码
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");
});
}
}
}
最佳答案
尽管 VisualStudio 的智能感知不能推断出正确的类型,但它仍然应该编译。我不知道 topshelf 在做什么,但我记得我上次尝试使用它时遇到了这些问题。
关于c# - 如何开始使用 TopShelf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25852846/