小编Rob*_*rto的帖子

停止多线程Windows服务

我在.Net 3.5中有一个多线程Windows服务,当创建多个线程时,我遇到一些麻烦来正确停止服务.

这个服务只用于创建一个线程来完成所有工作,我只是将其更改为多线程.它工作正常,但是当服务停止时,如果正在执行多个线程,它将挂起服务直到所有线程都完成.

启动服务后,我创建了一个后台线程来处理主进程:

    protected override void OnStart(string[] args)
    {
        try
        {
            //Global variable that is checked by threads to learn if service was stopped
            DeliveryConstant.StopService = false;
            bool SetMaxThreadsResult = ThreadPool.SetMaxThreads(10, 10);

            ThreadStart st = new ThreadStart(StartThreadPool);
            workerThread = new Thread(st);
            workerThread.IsBackground = true;
            serviceStarted = true;
            workerThread.Start();
        }
        catch (Exception ex)
        {
            //Log something;
        }
Run Code Online (Sandbox Code Playgroud)

这是StartThreadPool方法:

    //Tried with and without this attribute with no success...
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.Synchronized)]
    public void StartThreadPool()
    {
        while (serviceStarted)
        {
            ProcessInfo input = new ProcessInfo(); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading windows-services threadpool

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

为什么自定义SSIS日志提供程序不会显示在提供程序下拉列表中?

我正在尝试为SSIS创建自定义日志记录提供程序,但在部署dll时,它不会显示在提供程序列表中.

SSIS版本是11.0.2100.60.我尝试过.NET Framework 2.0和3.5.我安装在GAC中,并且还复制到以下两个文件夹中:

C:\Program Files\Microsoft SQL Server\110\DTS\LogProviders
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\LogProviders
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我打开了Visual Studio [Shell],并创建了一个简单的SSIS包.打开SSIS\Logging...菜单时,新的自定义日志提供程序不存在.

我现在使用的代码是Microsoft提供的示例包(HTMLLogProviderCS),没有运气.

任何我可能错过的想法?

sql-server ssis

3
推荐指数
1
解决办法
2319
查看次数