首页 > 编程 > .NET > 正文

vb.net中windows服务的创建

2024-07-10 13:00:36
字体:
来源:转载
供稿:网友
 

无论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.sqlclient

public 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 sub

end 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程序进行安装

注册会员,创建你的web开发资料库,
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表