Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Vla00
8 / 8 / 10
Регистрация: 06.10.2012
Сообщений: 598
1

Вызов функции в службе

26.11.2015, 21:01. Просмотров 321. Ответов 1
Метки нет (Все метки)

Необходимо написать службу которая будет отслеживать подключение USB устройств.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public partial class Service1 : ServiceBase
    {
        private List<UsbDevice> knowUsb;
        private UsbManager managerUsb;
 
        public Service1()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
            knowUsb = new List<UsbDevice>();
            try
            {
                using (Stream stream = File.Open("usb.bin", FileMode.Open))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    knowUsb = (List<UsbDevice>)bf.Deserialize(stream);
                }
            }catch{}
 
            managerUsb = new UsbManager();
            UsbDiskCollection udc = managerUsb.GetAvailableDisks();
            managerUsb.StateChanged += new UsbStateChangedEventHandler(state);
 
        }
 
        public void state(UsbStateChangedEventArgs e)
        {
            int a = 0;
            if (e.State == UsbStateChange.Added)
            {
                a++;
            }
            else
            {
                a--;
            }
        }
 
        protected override void OnStop()
        {
        }
    }
Когда запускаю службу выдает ошибку: служба не ответила на запрос своевременно. (1053)
Когда закоменчиваю строку:
C#
1
managerUsb.StateChanged += new UsbStateChangedEventHandler(state);
всё нормально запускается. В чем причина?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 21:01
Ответы с готовыми решениями:

Вызов функции из DLL на C#, используя С++
Есть функция в test.DLL на C#, например такая: using System; public class TestFuncClass { ...

Вызов функции из dll написанной на C
Привет всем! Возникла такая задача, решить не могу ни как. Есть dll. В ней есть функция (вроде...

Подключение сторонних DLL и вызов функции
Добрый день всем! Меня беспокоит следующий вопрос, который мне необходимо решить как можно скорее:...

Вызов функций зная название класса и функции
Пишу свою библиотеку. Как мне создать вызов функций из отдельного класса зная название класса и...

Вызов функции другого процесса (неверные регистры)
Всем привет. Я пытаюсь вызвать функцию из другого процесса, но вот беда - регистры формируются не...

1
ksk
619 / 487 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
26.11.2015, 23:07 2
Vla00,
У scm усть таймаут на запуск службы. Вроде бы 30 секунд, точно не помню.

Поэтому в обработчике OnStart сдедует запустить поток с главным рабочим циклом и сразу вернуть управление.
А выход из цикла (либо прерывание потока) следует осуществлять в обработчике события OnStop.

Пока не придёт Stop через scm, служба должна работать и что-то делать.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2015, 23:07

Вызов функции при закрытии консольного приложения
Пытаюсь реализовать вызов функции при закрытии консольного приложения(будь то закрытие пользователя...

Лямбда Выражение как простой вызов функции.
Здравствуйте, подскажите несведующему, чтобы использовать лямбда выражения нужен делегат и и какое...

Вызов функции с двумя параметрами в новом потоке
public void Func(float A, float B){ } Thread myThreadMD1 = new Thread( Func( Aa, Bb)) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.