除了service.StartType = ServiceStartMode.Automatic我的服务在安装后没有启动
解
在我的ProjectInstaller上插入此代码
protected override void OnAfterInstall(System.Collections.IDictionary savedState)
{
base.OnAfterInstall(savedState);
using (var serviceController = new ServiceController(this.serviceInstaller1.ServiceName, Environment.MachineName))
serviceController.Start();
}
Run Code Online (Sandbox Code Playgroud)
感谢ScottTx和Francis B.
构建Windows服务最简单的语言是什么?
在这种情况下,最简单的将被定义为最少的代码量,以及进入该语言的最低点.
我创建了一个运行某种方法的线程.但有时我想杀死线程,即使它仍在工作.我怎样才能做到这一点?我尝试了Thread.Abort(),但它显示了一个消息框,说"线程已中止".我该怎么办?
我正在尝试使用OWIN将Web API应用程序作为Windows服务运行.但是,在尝试启动服务时,我收到以下消息:
本地计算机上的[ServiceName]服务已启动,然后停止.如果某些服务未被其他服务或程序使用,则会自动停止.
出于某种原因,我的服务不明白它应该继续监听http:// localhost:9000
VS解决方案包含两个项目:Web API和Windows服务.
在Windows服务项目中,我有:
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service()
};
ServiceBase.Run(ServicesToRun);
}
}
public partial class Service : ServiceBase
{
private const string _baseAddress = "http://localhost:9000/";
private IDisposable _server = null;
public Service()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_server = WebApp.Start<Startup>(url: _baseAddress);
}
protected override void OnStop()
{
if (_server != null)
{
_server.Dispose();
}
base.OnStop();
}
}
Run Code Online (Sandbox Code Playgroud)
在 …
我正在尝试构建Windows服务,它需要某种并行性来汇集来自不同ftp源的文件.为了启动多个ftp下载,我正在寻找TPL库来轻松地进行foreach循环并使并行性变得非常容易.但是,当我搜索如何启动或停止我的服务时,我最好的资金是在OnStart()方法中创建新线程,如下所述/sf/answers/340612541/
阅读TPL总是注意到TPL比手动线程和手动停止线程更先进.
我没有找到任何描述如何在WindowsService中进行TPL循环的示例帖子?
我的代码:
protected override void OnStart(string[] args)
{
_thread = new Thread(WorkerThreadFunc);
_thread.Name = "My Worker Thread";
_thread.IsBackground = true;
_thread.Start();
}
Run Code Online (Sandbox Code Playgroud)
并在里面WorkerThreadFunc做了一些TPL
private void WorkerThreadFunc()
{
foreach (string path in paths)
{
string pathCopy = path;
var task = Task.Factory.StartNew(() =>
{
Boolean taskResult = ProcessPicture(pathCopy);
return taskResult;
});
task.ContinueWith(t => result &= t.Result);
tasks.Add(task);
}
}
Run Code Online (Sandbox Code Playgroud)
或者我应该开始我的WorkerThreadFunc作为TASK?