J'ai récemment découvert TopShelf. De tout ce que j'ai lu, ça a l'air très cool. Le seul problème est que je n'ai pas été capable de l'utiliser. Je dois avoir raté quelque chose. Voici mon code.Comment démarrer avec 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 => {
});
});
}
}
}
Vous pouvez voir que c'est un peu incomplet. Lorsque j'essaie de définir les propriétés de l'objet 's' pour ConstructUsing, WhenStarted et WhenStopped Visual Studio ne déduit pas le type correct. Je suis nouveau pour les expressions lambda et même plus récent pour TopShelf, donc je ne suis pas sûr de ce que je fais. J'utilise this page dans la documentation TopShelf pour commencer. Cela semble assez simple, alors je ne suis pas sûr de ce que j'ai manqué.
code mis à jour
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");
});
}
}
}
Cela ne fonctionne-t-il pas comme vous le souhaitez? Si oui, comment pensez-vous que cela devrait fonctionner et comment cela fonctionne-t-il réellement? Y at-il des erreurs? Si c'est vrai, que sont-ils? –
Bien que IntelliSense de VisualStudio ne déduit pas le type correct, il devrait toujours compiler. Je ne sais pas ce que fait topshelf mais je me souviens d'avoir eu ces problèmes la dernière fois que j'ai essayé de l'utiliser. – tobsen
@PeterRitchie quand je déclare s, il me donne un message qui dit "Delegate 'System.Func' ne prend pas 1 arguments" parmi 7 autres erreurs. –
fizch