网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VB.net > 正文
VB.NET开发扫描客户端服务工具
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
态不正常则触发另一线程得到该IP的信息

Sub GetStausF()

Dim ServiceP As New ServiceController() ‘实例化一个ServiceController类

ServiceP.MachineName = IMachineIP

ServiceP.ServiceName = IServiceName

Dim myRow As DataRow

Dim status As String

Dim Run As Boolean = False

myRow = ds.Tables(ITable).NewRow

Try

If ServiceP.Status.ToString <> "Running" Then

status = ServiceP.Status.ToString‘如果状态不是RUNNING则将状态赋予字符串变量

Else

Run = True ‘如果状态为RUNNING,则不做任何事

End If

Catch er As Exception ‘以下处理取得状态时候发生的异常

status = Left(er.Message, 35)

If InStr(status, "Service Control Manager") = 0 Then

status = "Not installed or open service failed" ‘没有安装该服务

ElseIf InStr(er.Message, "Manager") > 0 Then

status = "Can not detected" ‘服务的状态不可得

End If

End Try

ServiceP.Close() ‘关闭ServiceController实例

‘以下判断如果状态不是RUNNING,则记录该系统,并触发线程得到它的详细信息。

If Not Run Then

myRow("msg") = status

myRow("ip") = IMachineIP

SyncLock GetType(AddRow) ‘为保证多线程情况下,对DataSet只有一个写操作,锁定AddRow类

Dim AddRowIns As New AddRow(myRow) ‘将IP和状态通过我们自己写的AddRow类插入DataSet

End SyncLock

‘触发另一线程取得机器信息

Dim HostInfo2 As New HostInfo(IMachineIP)

Dim HostThr2 As New Thread(New ThreadStart(AddressOf HostInfo2.sysInfo))

HostThr2.Start()

SyncLock GetType(HostInfoThreadCounter)

HostInfoThreadCounter.counter += 1 ‘启动线程数加1

End SyncLock

End If

SyncLock GetType(StoppCounter)

StopThr.AddStop()

End SyncLock

End Sub

End Class

‘该类只有一个方法,就是将停止的线程数减1

Class StoppCounter

Sub AddStop()

ThreadCounterStopped = ThreadCounterStopped + 1

End Sub

End Class

‘此类用于将已有的行插入DataSet

Class AddRow

‘第一个构造函数,以构造好的行为输入参数

Sub New(ByVal row As DataRow)

Try

ds.Tables(0).Rows.Add(row)

Catch ee As Exception



End Try

End Sub

‘第二个构造函数,以机器名用户名等字符串为参数,更新已有的行

Sub New(ByVal IP As String, ByVal user As String, ByVal hostname As String, ByVal Mac As String, ByVal domain As String, ByVal timeout As Char)

Dim RowTimeOut As DataRow

Try

For Each RowTimeOut In ds.Tables(0).Select("IP=''" & IP & "''")

RowTimeOut.Item("LastUID") = user

RowTimeOut.Item("Name") = hostname

RowTimeOut.Item("Mac") = Mac

RowTimeOut.Item("Domain") = domain

RowTimeOut.Item("Timeout") = timeout ''Set timeout flag to this item

Exit For ''just run once

Next

Catch er As Exception



End Try

End Sub

End Class

‘由于篇幅限制,这里省略了根据IP取得机器信息的类的代码。

Imports System.Threading ‘用于支持多线程

Imports System.Xml ‘用于分析XML格式的参数文件

Imports System.Data ‘用于保存结果到数据库

Module Module1

Public ds As New DataSet()

Public conn1 As SqlClient.SqlConnection ‘数据库连接

Public ipf As String ‘IP列表文件名

Public dbf As String ‘数据库信息文件

Public ThreadCounterStopped As Integer

Public StopThr As New StoppCounter()

Sub Main() ‘程序主程序

Dim machineIP As String

Dim iplistF As New Xml.XmlDocument()

Dim
  • 上一篇资讯: VB.NET中的变量范围差异
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号