powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / передача параметров в Thread Windows Service
6 сообщений из 6, страница 1 из 1
передача параметров в Thread Windows Service
    #39311186
Uzrptav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Дорабатываю Windows Service который должен запускаться с определенным интервалом и брать данные с интернета.
Подскажите, пожалуйста, как корректно прокинуть экземпляр класса с параметрами (InitParms initParms) в MainMethod(InitParms initParms) который находится в отдельном Thread.
На разных машинах работает по разному: в одном случае в MainMethod InitParms = null, в другом InitParms передается заполненным.
Заранее благодарен!

Класс с параметрами:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class InitParms
    {
        /*Время интервала работы сервиса*/
        public int waitTime { get; set; }        
        /*Строка соединения с целевой БД*/
        public string connString { get; set; }        
        /*Использовать Прокси true/false*/
        public bool useProxyFlag { get; set; } 
}  


Класс с потоками и задержкой:
Код: 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.
public partial class Service1 : ServiceBase
    {
        InitParms initParms;

 public Service1()
        {
            InitializeComponent();

            initParms = new InitParms();
           /*Время интервала работы сервиса*/
            initParms.waitTime = Convert.ToInt32(ConfigurationManager.AppSettings["WaitTime"]);
            /*Строка соединения с целевой БД*/
            initParms.connString = ConfigurationManager.AppSettings["ConnectionString"];
            /*Использовать Прокси true/false*/
            initParms.useProxyFlag = Convert.ToBoolean(ConfigurationManager.AppSettings["UseProxy"]);
            new Thread(() =>
                {
                    Thread.CurrentThread.IsBackground = true;
                    while (true)
                    {
                        new Thread(() =>
                        {
                            Thread.CurrentThread.IsBackground = true;
                            try
                            {
                               MainMethod(initParms);
                            }
                            catch (Exception ex)
                            {
                               /**     Write to LOG   **/
                            }                           
                        }).Start();
                        //Thread.Sleep(initParms.waitTime);-- NULL!!!
                        Thread.Sleep(60000);
                    }
                }).Start();
        }

 void MainMethod(InitParms initParms)
 {
     /**     InitParms is NULL!!!   **/
 }

...
Рейтинг: 0 / 0
передача параметров в Thread Windows Service
    #39311209
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uzrptav, бред какой то, задержки ( гыгы) одна минута, планировщик снаружи прикрутить не могу.
...
Рейтинг: 0 / 0
передача параметров в Thread Windows Service
    #39311225
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще муть какая то. Ладно, человек боится использовать quartz.net. Что мешает использовать System.Timers.Timer или System.Threading.Timer вместо ненужного потока?

Зачем передавать какой то класс? Что мешает в том же потоке обращаться к ConfigurationManager?

Если эти данные общие для всех классов, можно сделать статические поля, не имеющие проблем с потокобезопасностью
...
Рейтинг: 0 / 0
передача параметров в Thread Windows Service
    #39311436
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код плох, но это не сутъ. initParms не должен быть нулём. Я не вижу.
...
Рейтинг: 0 / 0
передача параметров в Thread Windows Service
    #39311439
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uzrptav
Код: c#
1.
2.
3.
4.
void MainMethod(InitParms initParms)
 {
     /**     InitParms is NULL!!!   **/
 }



И как Вы поняли, что "InitParms is NULL"?
...
Рейтинг: 0 / 0
передача параметров в Thread Windows Service
    #39311691
Uzrptav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам не совсем понял суть такой реализации сервиса. Проблема была в ошибках в App.config.
Попробую переделать через System.Timers.Timer с использованием статических полей вместо класса прокладки.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / передача параметров в Thread Windows Service
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]