相关疑难解决方法(0)

如何在安装后立即启动.NET Windows服务?

除了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.

.net installer windows-services

86
推荐指数
7
解决办法
9万
查看次数

用于创建Windows服务的最简单语言

构建Windows服务最简单的语言是什么?

在这种情况下,最简单的将被定义为最少的代码量,以及进入该语言的最低点.

windows-services

52
推荐指数
1
解决办法
6万
查看次数

杀死.NET线程

我创建了一个运行某种方法的线程.但有时我想杀死线程,即使它仍在工作.我怎样才能做到这一点?我尝试了Thread.Abort(),但它显示了一个消息框,说"线程已中止".我该怎么办?

c# multithreading abort

19
推荐指数
4
解决办法
7万
查看次数

使用OWIN将Web API作为Windows服务托管

我正在尝试使用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)

在 …

c# windows-services self-hosting asp.net-web-api owin

9
推荐指数
1
解决办法
9401
查看次数

在C#内部使用TPL内部服务的基本设计模式

我正在尝试构建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?

c# multithreading windows-services task-parallel-library

8
推荐指数
1
解决办法
6800
查看次数