﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / .NET / VB.NET  / Запуск windows службы / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Fri, 16 May 2008 09:10:18 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>[quote][b]babken76 (02.07.2007)[/b][hr]Убрал вообще таймер из проекта. Результат тот же.[/quote]&lt;/P&gt;&lt;P&gt;Любопытно. А что будет если закоментировать код в процедурах OnStart/OnStop/OnPause/OnContinue? То есть оставить голый скелет без реального кода. Если и такой вариант будет слетать, то проблема явно не в твоем коде.&lt;/P&gt;&lt;P&gt;Кстати, почему у тебя закоментировано наследование от ServiceBase?</description><pubDate>Mon, 02 Jul 2007 17:41:15 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>У меня нет Visual Basic чтобы кинуть сюда проверенный код поэтому объясню на словах.&lt;/P&gt;&lt;P&gt;Объяви в классе private переменную типа System.Threading.Timer. Создай два метода StartTimer и StopTimer. Добавь вызов StartTimer в методы OnStart и OnContinue, а вызов StopTimer в OnStop и в OnPause.&lt;/P&gt;&lt;P&gt;Создай метод c кодом из Timer1_Tick&lt;/P&gt;&lt;P&gt;Private Sub OnTimerTick(Object state)&lt;BR&gt;...&lt;BR&gt;End Sub&lt;/P&gt;&lt;P&gt;В методе StartTimer напиши код создающий экземпляр System.Threading.Timer. Надо вызывать конструктор с 4 аргументами: 1) адрес функции OnTimerTick 2) доп. аргумент для функции таймера (Nothing) 3) 0 4) 1000.&lt;/P&gt;&lt;P&gt;В методе StopTimer надо сделать вызов метода Timer.Change(Timeout.Infinite) - чтобы остановить таймер и присвоение переменной класса значения Nothing чтобы ее подобрал сборщик мусора.&lt;/P&gt;&lt;P&gt;Вроде все.</description><pubDate>Mon, 02 Jul 2007 17:36:46 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>Убрал вообще таймер из проекта. Результат тот же.&lt;br&gt;&lt;br&gt;С уважением,</description><pubDate>Mon, 02 Jul 2007 17:25:45 GMT</pubDate><dc:creator>babken76</dc:creator></item><item><title>RE: Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>Как использовать в службе System.Threading.Timer сам не разобрался. Если можно пример.&lt;br&gt;&lt;br&gt;С уважением,</description><pubDate>Mon, 02 Jul 2007 16:37:29 GMT</pubDate><dc:creator>babken76</dc:creator></item><item><title>RE: Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>Рискну предположить что это происходит из-за использования класса System.Windows.Forms.Timer (переменная Timer1). Этот тип таймеров предназначен для использования только в GUI приложениях так как работает через механизм оконнных сообщений. Попробуй использовать класс System.Threading.Timer.</description><pubDate>Mon, 02 Jul 2007 15:17:19 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>Запуск windows службы</title><link>http://www.relib.com/forums/Topic914468-27-1.aspx</link><description>Прочел в книге А. Гарнаева о создании служб в 2003 студии.&lt;br&gt;в vs 2005 сделал по аналогии:&lt;br&gt;1.&lt;br&gt;[code]&lt;br&gt;Imports System.IO&lt;br&gt;Imports System.ServiceProcess&lt;br&gt;&lt;br&gt;Public Class FPDServ&lt;br&gt;    'Inherits System.ServiceProcess.servisebase&lt;br&gt;&lt;br&gt;    Protected Overrides Sub OnStart(ByVal args() As String)&lt;br&gt;        ' Add code here to start your service. This method should set things&lt;br&gt;        ' in motion so your service can do its work.&lt;br&gt;        Dim f As TextWriter = New StreamWriter("c:\test.txt")&lt;br&gt;        f.WriteLine("on")&lt;br&gt;        f.Close()&lt;br&gt;        Timer1.Enabled = True&lt;br&gt;        Timer1.Interval = 1000&lt;br&gt;        EventLog.WriteEntry("FPDServe on")&lt;br&gt;    End Sub&lt;br&gt;&lt;br&gt;    Protected Overrides Sub OnStop()&lt;br&gt;        ' Add code here to perform any tear-down necessary to stop your service.&lt;br&gt;        Timer1.Enabled = False&lt;br&gt;        Dim f As TextWriter = New StreamWriter("c:\test.txt")&lt;br&gt;        f.WriteLine("off")&lt;br&gt;        f.Close()&lt;br&gt;        EventLog.WriteEntry("FPDServe off")&lt;br&gt;    End Sub&lt;br&gt;&lt;br&gt;    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick&lt;br&gt;        Dim f As IO.StreamWriter = New IO.StreamWriter("c:\test.txt", True)&lt;br&gt;        f.WriteLine("PerformanceCounter " &amp; PerformanceCounter1.NextValue.ToString _&lt;br&gt;        &amp; TimeOfDay.ToLongTimeString)&lt;br&gt;        f.Close()&lt;br&gt;    End Sub&lt;br&gt;&lt;br&gt;    Protected Overrides Sub OnContinue()&lt;br&gt;        MyBase.OnContinue() 'auto gen&lt;br&gt;        Dim f As TextWriter = New StreamWriter("c:\test.txt")&lt;br&gt;        f.WriteLine("Continue")&lt;br&gt;        f.Close()&lt;br&gt;        EventLog.WriteEntry("FPDServe Continue")&lt;br&gt;    End Sub&lt;br&gt;&lt;br&gt;    Protected Overrides Sub OnPause()&lt;br&gt;        MyBase.OnPause() 'auto gen&lt;br&gt;        Dim f As TextWriter = New StreamWriter("c:\test.txt")&lt;br&gt;        f.WriteLine("Pause")&lt;br&gt;        f.Close()&lt;br&gt;        EventLog.WriteEntry("FPDServe Paused")&lt;br&gt;    End Sub&lt;br&gt;&lt;br&gt;End Class&lt;br&gt;[/code]&lt;br&gt;&lt;br&gt;2. Добавил Installer. &lt;br&gt;ServiceInstaller.Name = FPDServe ' ИмяМоегоСервиса&lt;br&gt;ServiceProcessInstaller.Account = LocalSystem&lt;br&gt;Успешно откомпилировал.&lt;br&gt;&lt;br&gt;3. Успешно установил. &lt;br&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe FPDServe.exe&lt;br&gt;&lt;br&gt;При попытке запуска службы из оснастки выдается сообщение&lt;br&gt;An unhandled exception ('System.InvalidOperationException') occured in FPDServe.exe [968] с предложением отладки в VS 2005&lt;br&gt;Затем выдается сообщение:&lt;br&gt;Ошибка 1053: Служба не ответила на запрос своевременно.&lt;br&gt;&lt;br&gt;Использую WinXP, &lt;br&gt;.NET Framework 2.0 Configuration&lt;br&gt;(version 2.0.50727.42)&lt;br&gt;&lt;br&gt;С уважением,</description><pubDate>Mon, 02 Jul 2007 14:40:02 GMT</pubDate><dc:creator>babken76</dc:creator></item></channel></rss>