NSDClientCount メンバ

複数クライアント(同一LAN、同一ドメイン、同一プロトコルを使用している)で実行している自分自身の数を取得します。

●コンストラクタ

名前 説明
NSDClientCount NSDClientCountを初期化します。

●プロパティの一覧

名前 説明
TimerEnabled タイマーのEnabledを設定します。
TimerInterval タイマーの間隔を設定します。
EndFlag 終了通知の処理方法を設定します。

●メソッドの一覧

名前 引数 戻り値 説明
Dispose なし なし リソースの解放を行います。
Init_ClientCount ( String , Boolean , [NSDClientCount_EventHandler] , [String] ) Boolean型 初期化処理を行います。
ClientCountCheck ( ArrayList ) Boolean型 同一プログラムの起動確認を行います。
GetClientList ( ArrayList , Integer ) Boolean型 同一プログラム起動のコンピュータリストを取得します。

●イベントの一覧

名前 引数 戻り値 説明
NSDCCTimerTick ( Object , NSDClientCountEventArgs ) Boolean型 定期的に発生するイベント。

●NSDClientCountコンストラクタの説明

構文:Public Sub New()

使用法:Dim Cls_NSDCC As New NSDClientCount

引数:なし。

使用例:

Public Class Form1
    Dim Cls_NSDCC As New NSDClientCount
        :
End Class

●NSDClientCountプロパティの説明

名前:TimerEnabled

構文:Public Property TimerEnabled() As Boolean

機能:タイマーのEnabledを設定します。

Set値:タイマーのEnabledをセットします。

Get値:タイマーのEnabledを取得します。

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True, _
                                                 AddressOf NSDCCTimerTick) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub NSDCCTimerTick( ByVal sender As Object, _
                                ByVal e As NSDClientCount.NSDClientCountEventArgs)
        Try
            ' タイマーを停止します。
            CType(sender, NSDClientCount).TimerEnabled = False

            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (e.List Is Nothing) Then
                    For Int_Loop As Integer = 0 to e.List.Count - 1
                        .Items.Add(e.List.Item(Int_Loop))
                    Next
                End If
            End With

        Catch ex As Exception
        Finally
            ' タイマーを開始します。
            CType(sender, NSDClientCount).TimerEnabled = True
        End Try
    End Sub
End Class

 

名前:TimerInterval

構文:Public Property TimerInterval() As Integer

機能:タイマーの間隔を設定します。

Set値:タイマーの間隔(ミリ秒(ms)単位 1000ms=1秒)をセットします。

Get値:タイマーの間隔(ミリ秒(ms)単位 1000ms=1秒)を取得します。

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True, _
                                                 AddressOf NSDCCTimerTick) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
            ' 5秒間隔で確認します。
            ClsPrv_NSDCC.TimerInterval = 5000
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub NSDCCTimerTick( ByVal sender As Object, _
                                ByVal e As NSDClientCount.NSDClientCountEventArgs)
        Try
            ' タイマーを停止します。
            CType(sender, NSDClientCount).TimerEnabled = False

            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (e.List Is Nothing) Then
                    For Int_Loop As Integer = 0 to e.List.Count - 1
                        .Items.Add(e.List.Item(Int_Loop))
                    Next
                End If
            End With

        Catch ex As Exception
        Finally
            ' タイマーを開始します。
            CType(sender, NSDClientCount).TimerEnabled = True
        End Try
    End Sub
End Class

 

名前:EndFlag

構文:Public Property EndFlag() As Boolean

機能:終了通知の処理方法を設定します。

Set値:True = 終了通知でコンピュータリストから削除します。
False = 終了通知がある場合でもコンピュータリストから削除しません。

Get値:True = 終了通知でコンピュータリストから削除します。
False = 終了通知がある場合でもコンピュータリストから削除しません。

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, True) Then
                MsgBox("初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button1_Click( sender As System.Object, _
                               e As System.EventArgs _
                              ) Handles Button1.Click
        Try
            ' 終了通知の処理方法を切り替えます。
            ClsPrv_NSDCC.EndFlag = Not ClsPrv_NSDCC.EndFlag
        Catch ex As Exception

        End Try
    End Sub
End Class

●NSDClientCountメソッドの説明

名前:Dispose
構文:Public Overridable Sub Dispose() Implements IDisposable.Dispose

機能:リソースを解放します。

※終了時に必ず呼び出します。

引数:なし。

戻り値:なし。

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, True) Then
                MsgBox("初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub
End Class

 

名前:Init_ClientCount
構文:Public Function Init_ClientCount( MailSlotName , EndCheck , [EventTimerTick] , [DomainName] ) As Boolean

機能:初期化処理を行います。

引数:

名前 引数渡しの方法 説明
MailSlotName String 値渡し(ByVal) メールスロット名を渡します。
EndCheck Boolean 値渡し(ByVal) 終了通知の処理方法を渡します。
True = 終了通知でコンピュータリストから削除します。
False = 終了通知がある場合でもコンピュータリストから削除しません。
[EventTimerTick] NSDClientCount_EventHandler 値渡し(ByVal) 定期的に取得するイベントのハンドルを渡します。(既定値:Nothing)
[DomainName] String 値渡し(ByVal) ドメイン名を渡します。(既定値:Nothing)
※Nothingはプライマリドメインで処理します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例@:初期化関数に定期イベントのアドレスを渡す方法。

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True, _
                                                 AddressOf NSDCCTimerTick) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    ' 定期的に発生するイベント。
    Private Sub NSDCCTimerTick( ByVal sender As Object, _
                                ByVal e As NSDClientCount.NSDClientCountEventArgs)
        Try
            ' タイマーを停止します。
            CType(sender, NSDClientCount).TimerEnabled = False

            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (e.List Is Nothing) Then
                    For Int_Loop As Integer = 0 to e.List.Count - 1
                        .Items.Add(e.List.Item(Int_Loop))
                    Next
                End If
            End With

        Catch ex As Exception
        Finally
            ' タイマーを開始します。
            CType(sender, NSDClientCount).TimerEnabled = True
        End Try
    End Sub
End Class

使用例A:タイマーで定期的に確認する方法。

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True ) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    ' 定期的に確認します。
    Private Sub Timer1_Tick( sender As System.Object, _
                             e As System.EventArgs _
                            ) Handles Timer1.Tick
        Try
            Dim Cls_ComputerList As Collections.ArrayList = Nothing
            If ClsPrv_NSDCC.ClientCountCheck(Cls_ComputerList) Then
                ' コンピュータ名をセットします。
                With Me.ListBox1
                    .Items.Clear()

                    If Not (Cls_ComputerList Is Nothing) Then
                        For Int_Loop As Integer = 0 to Cls_ComputerList.Count - 1
                            .Items.Add(Cls_ComputerList.Item(Int_Loop))
                        Next
                    End If
                End With
            End If

        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:ClientCountCheck
構文:Public Function ClientCountCheck( ComputerList ) As Boolean

機能:同一プログラムの起動確認を行います。

引数:

名前 引数渡しの方法 説明
ComputerList Collections.ArrayList 参照渡し(ByRef) コンピュータ名のリストを返します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True ) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    ' 定期的に確認します。
    Private Sub Timer1_Tick( sender As System.Object, _
                             e As System.EventArgs _
                            ) Handles Timer1.Tick
        Try
            Dim Cls_ComputerList As Collections.ArrayList = Nothing
            If ClsPrv_NSDCC.ClientCountCheck(Cls_ComputerList) Then
                ' コンピュータ名をセットします。
                With Me.ListBox1
                    .Items.Clear()

                    If Not (Cls_ComputerList Is Nothing) Then
                        For Int_Loop As Integer = 0 to Cls_ComputerList.Count - 1
                            .Items.Add(Cls_ComputerList.Item(Int_Loop))
                        Next
                    End If
                End With
            End If

        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetClientList
構文:Public Function GetClientList( ComputerList , WaitTime ) As Boolean

機能:同一プログラムの起動確認を行います。

引数:

名前 引数渡しの方法 説明
ComputerList Collections.ArrayList 参照渡し(ByRef) コンピュータ名のリストを返します。
WaitTime Integer 値渡し(ByVal) 返信確認までの待ち時間をms(ミリ秒)で指定します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True, _
                                                 AddressOf NSDCCTimerTick) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    ' 定期的に発生するイベント。
    Private Sub NSDCCTimerTick( ByVal sender As Object, _
                                ByVal e As NSDClientCount.NSDClientCountEventArgs)
        Try
            ' タイマーを停止します。
            CType(sender, NSDClientCount).TimerEnabled = False

            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (e.List Is Nothing) Then
                    For Int_Loop As Integer = 0 to e.List.Count - 1
                        .Items.Add(e.List.Item(Int_Loop))
                    Next
                End If
            End With

        Catch ex As Exception
        Finally
            ' タイマーを開始します。
            CType(sender, NSDClientCount).TimerEnabled = True
        End Try
    End Sub

    ' 再取得ボタン。
    Private Sub Button1_Click( sender As System.Object, _
                               e As System.EventArgs _
                              ) Handles Button1.Click
        Try
            Dim Int_WaitTime As Integer = 1000
            Dim Cls_ComputerList As Collections.ArrayList = Nothing

            ClsPrv_NSDCC.GetClientList(Cls_ComputerList, Int_WaitTime)
            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (Cls_ComputerList Is Nothing) Then
                    For Int_Loop As Integer = 0 to Cls_ComputerList.Count - 1
                        .Items.Add(Cls_ComputerList.Item(Int_Loop))
                    Next
                End If
            End With
        Catch ex As Exception

        End Try
    End Sub
End Class

●NSDClientCountイベントの説明

名前:NSDCCTimerTick
構文:Public Event NSDCCTimerTick( sender , EventArgs )

機能:定期的に発生するイベント。

引数:

名前 引数渡しの方法 説明
sender Object 値渡し(ByVal) 呼び出し元を渡します。
EventArgs NSDClientCountEventArgs 値渡し(ByVal) コンピュータ名のリストを渡します。

戻り値:なし。

使用例:

Public Class Form1
    Dim ClsPrv_NSDCC As NSDClientCount = Nothing

    Private Sub Form1_Load( sender As System.Object, _
                            e As System.EventArgs _
                           ) Handles MyBase.Load
        Try
            ClsPrv_NSDCC = New NSDClientCount

            Dim Str_MailSlotName As String = "Test\Client\Count\Check"
            If Not ClsPrv_NSDCC.Init_ClientCount(Str_MailSlotName, _
                                                 True, _
                                                 AddressOf NSDCCTimerTick) Then
                MsgBox( "初期化に失敗しました。" & _
                        ControlChars.CrLf & _
                        "コンピュータを再起動してください。")
                End
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_FormClosed( sender As Object, _
                                  e As System.Windows.Forms.FormClosedEventArgs _
                                 ) Handles Me.FormClosed
        Try
            ' 解放処理。
            If Not (ClsPrv_NSDCC Is Nothing) Then
                ClsPrv_NSDCC.Dispose()
                ClsPrv_NSDCC = Nothing
            End If
        Catch ex As Exception

        End Try
    End Sub

    ' 定期的に発生するイベント。
    Private Sub NSDCCTimerTick( ByVal sender As Object, _
                                ByVal e As NSDClientCount.NSDClientCountEventArgs)
        Try
            ' タイマーを停止します。
            CType(sender, NSDClientCount).TimerEnabled = False

            ' コンピュータ名をセットします。
            With Me.ListBox1
                .Items.Clear()

                If Not (e.List Is Nothing) Then
                    For Int_Loop As Integer = 0 to e.List.Count - 1
                        .Items.Add(e.List.Item(Int_Loop))
                    Next
                End If
            End With

        Catch ex As Exception
        Finally
            ' タイマーを開始します。
            CType(sender, NSDClientCount).TimerEnabled = True
        End Try
    End Sub
End Class

Copyright (C) 2013 Nihon System Developer Corp. All Rights Reserved.