Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание службы, Не запускается форма и таймер в службе 
V
    Опции темы
puZzo
Дата 14.10.2010, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Написал службу простейшую, по одному примеру, запуск службы, она создает поток, в потоке форма и таймер. Служба устанавливается и запускается, а вот форма с таймером никак не желают, что-то где-то упустил?

Код


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace myService
{
    public class myService : ServiceBase
    {
        public const string MyServiceName = "myService";

        System.Windows.Forms.Timer timer1;
        System.Windows.Forms.Form form1;
        System.Threading.Thread thread1;
        
        
        
        public myService()
        {
            InitializeComponent();
        }
        
        private void InitializeComponent()
        {
            this.ServiceName = MyServiceName;
        }
    
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
        

        // *************************************
        protected override void OnStart(string[] args)
        {
            thread1 = new Thread(new ThreadStart(ThreadProc));
            thread1.Start();
            thread1.IsBackground = true;
        }
        
        // *************************************
        protected override void OnStop()
        {
            thread1.Abort();
        }
        
        
        //  Фоновый поток с формой и таймером
                // *************************************
        void ThreadProc()
        {
            // Создание формы и таймера в потоке
            form1 = new System.Windows.Forms.Form();
            timer1 = new System.Windows.Forms.Timer();
            timer1.Tick += new EventHandler(onTimerTick);
            timer1.Interval = 5000;
            timer1.Start();
            form1.Show();
            // запускаем все это добро
            System.Windows.Forms.Application.Run(form1);
        }
        
        
        // Метод срабатывания таймера
                // *************************************
        private void onTimerTick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            timer1.Stop();
            MessageBox.Show("sdfsdf");
            timer1.Enabled = true;
            timer1.Start();
        }
    }
}


Как можно заметить пишу на SharpDevelop, понимаю что нужно запускать службу от имени какого-либо пользователя, но где и как это настроить? В SD не могу найти мастеров по созданию инсталлеров как в Visual Studio, а на VS не хочу писать, да и хотелось бы разобраться с этим без ее мастеров.

Это сообщение отредактировал(а) puZzo - 14.10.2010, 03:35
PM ICQ   Вверх
mrbrooks
Дата 14.10.2010, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



А зачем службе форма с таймером? smile Где такое подсмотрел? 

Цитата(puZzo @  14.10.2010,  04:32 Найти цитируемый пост)
но где и как это настроить?

installutil.exe 
sc.exe
net.exe

Написание на SharpDevelop определенно не освобождает от чтения MSDN.

PM MAIL   Вверх
puZzo
Дата 14.10.2010, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Цитата(mrbrooks @ 14.10.2010,  08:01)
Написание на SharpDevelop определенно не освобождает от чтения MSDN.

Полностью согласен и уже исправился=)

забил на форму, таймер запустил System.Timers.Timer а не System.Windows.Forms.Timer.
проблему прав решил в ProjectInstaller.cs

serviceProcessInstaller.Account = ServiceAccount.LocalSystem;

=)

Это сообщение отредактировал(а) puZzo - 14.10.2010, 10:47
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.