龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

vb.net中windows服务的创建

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
无论windows服务执行什么样的处理,创建与安装服务的步骤都十分相似.visual studio提供了windows services项目类型,利用它可以迅速创建windows服务,一下介绍简单的步骤:1)新建项目,在new project对

无论windows服务执行什么样的处理,创建与安装服务的步骤都十分相似.visual studio提供了windows services项目类型,利用它可以迅速创建windows服务,一下介绍简单的步骤:1)新建项目,在new project对话框中,选择windows服务图标,在对话框name字段输入服务名称,确定.visual studio将显示服务的设计视图.2)在服务属性里面进行设置:servicebase类的属性如下: a.autolog 获得或设置指定服务是否在时间日志中自动报告start,stop,pause和contunue操作的布尔值 b.canhandlepowerevent 获得或设置指定服务是否可以对应于电源状态变化的布尔值,假如服务提供了onpowreevent方法,该属性应设置为true, c.canstop 获得或设置服务是否可以停止的布尔值,假如提供了onstop方法,则设置为true d.servicename 获得或设置使系统识别服务的名称编写你的服务信息,例如:Imports System.ServiceProcess

  Imports System.Threading

  Imports System.Data.SqlClientPublic Class Service1

   Inherits System.ServiceProcess.ServiceBase

   Private Shared bstop As Boolean

   Private mythread As Thread

  #Region " 组件设计器生成的代码 " '组件设计器所必需的

   Private components As System.ComponentModel.IContainer '注重: 以下过程是组件设计器所必需的

   ' 可以使用组件设计器修改此过程。

   ' 不要使用代码编辑器修改它。

  

   Private Sub startserver()

   bstop = False

   Dim OrderForm, ddh, matnrh As String

   Dim MyLocalDataReader As SqlDataReader

   Dim MyprdDataReader As SqlDataReader

   Dim mykc As SqlDataReader

   Dim kcsl, prdsl, tempsl As Long

   Dim flag As Boolean = False

   Dim mat As String

   Dim vrm As Long

   While Not bstop

   Try

   SqlCMDtemp.CommandText = "delete from tb_ty_cctemp"

   SqlCMDtemp.Connection = SqlConnection_local

   SqlCMDtemp.ExecuteNonQuery()

   If SqlCMDtemp.ExecuteNonQuery() = 0 Then

   mythread.Sleep(180000)

   End If

   End While

   mythread.Sleep(180000)

   Catch ex As Exception

   bstop = True

   End Try

   End While

   End Sub

   Private Sub stopserver()

   Dim i As Integer = 0

   bstop = True

   Try

   SqlConnection_local.Close()

   SCMlocal.CommandText = "insert into MyServiceLog(vc_status,dt_created) values('服务关闭',getdate())"

   SqlConnection_local.Open()

   SCMlocal.Connection = SqlConnection_local

   i = SCMlocal.ExecuteNonQuery

   Catch ex As Exception

   bstop = True

   End Try

   End Sub

   Protected Overrides Sub OnStart(ByVal args() As String)

   ' 在此处添加启动服务的代码。此方法应设置具体的操作

   ' 以便服务可以执行它的工作。

   Dim i As Integer

   Try

   SqlConnection_local.Close()

   SCMlocal.CommandText = ""

   SCMlocal.CommandText = "insert into MyServiceLog(vc_status,dt_created) values('服务启动',getdate())"

   SqlConnection_local.Open()

   SCMlocal.Connection = SqlConnection_local

   i = SCMlocal.ExecuteNonQuery

   Catch ex As Exception

   bstop = True

   End Try

   mythread = New Thread(AddressOf startserver)

   mythread.Start()

   End Sub

   Protected Overrides Sub OnPause()

   mythread.Suspend()

   End Sub

   Protected Overrides Sub OnContinue()

   mythread.Resume()

   End Sub

  

Protected Overrides Sub OnStop()

   ' 在此处添加代码以执行停止服务所需的关闭操作。

   Me.stopserver()

   End SubEnd Class假如需要把服务时间写入windows事件日志,以下的代码片断使用eventlog对象把一个项放入application日志中:dim log as new eventlog("application")log.source="program name"log.writeentry("message to place into the event log")log.close添加安装在设计视图右击,选择添加安装程序并进行相应的设置使用installutil程序进行安装

  

精彩图集

赞助商链接