CHỈNH SỬA: Tính năng này chỉ hoạt động khi chạy .exe, không hoạt động khi đang chạy dưới dạng dịch vụ. Là một thay thế bạn có thể thêm các tùy chọn như một giá trị cấu hình và đọc nó lúc khởi động (đó là thực tế có lẽ tốt hơn anyway):
using System.Configuration;
// snip
string foobar = null;
HostFactory.Run(configurator =>
{
foobar = ConfigurationManager.AppSettings["foobar"];
// do something with fooBar
configurator.Service<ServiceClass>(settings =>
{
settings.ConstructUsing(s => GetInstance<ServiceClass>());
settings.WhenStarted(s => s.Start());
settings.WhenStopped(s => s.Stop());
});
configurator.RunAsLocalService();
configurator.SetServiceName("ServiceName");
configurator.SetDisplayName("DisplayName");
configurator.SetDescription("Description");
configurator.StartAutomatically();
});
Theo tài liệu bạn cần phải xác định các lệnh trong này mẫu:
-foobar:Test
bạn cũng cần phải thêm định nghĩa trong cấu hình dịch vụ của bạn:
string fooBar = null;
HostFactory.Run(configurator =>
{
configurator.AddCommandLineDefinition("fooBar", f=> { fooBar = f; });
configurator.ApplyCommandLine();
// do something with fooBar
configurator.Service<ServiceClass>(settings =>
{
settings.ConstructUsing(s => GetInstance<ServiceClass>());
settings.WhenStarted(s => s.Start());
settings.WhenStopped(s => s.Stop());
});
configurator.RunAsLocalService();
configurator.SetServiceName("ServiceName");
configurator.SetDisplayName("DisplayName");
configurator.SetDescription("Description");
configurator.StartAutomatically();
});
Sau khi AddCommandLineDefinition() và trước khi // làm điều gì đó bạn cần thêm dòng sau: cấu hình.ApplyCommandLine(); – Todd
Bạn có thể thêm đối số dòng lệnh vào ServiceClass không? Tôi đang cố gắng làm điều đó, nhưng nó sẽ không hoạt động khi tôi bắt đầu nó như một dịch vụ. – fuLLMetaLMan
Có. Điều này không hoạt động khi cài đặt/khởi động nó như dịch vụ. foobar trống. @fuLLMetaLMan: Bạn có tìm thấy câu trả lời không? –