referencing a dll in a windows service

2019-09-17 00:14发布

I wrote an OPC client using interop.opcautomation.dll. I wrote it as a windows form in vb 2010 express. everything is currently working well. I wanted to make it a windows service though. The problem I am having is that it will not connect to the opc server when I run the service. I get the following exception "Object reference not set to an instance of an object.- OPC Connect Error" I get the exception at the end of the code where I am trying to connect. Below is the code. Thanks for any input, it is appreciated.

Imports System.ServiceProcess
Imports System.Threading
Imports System.Text
Imports System.Windows.Forms
Imports System
Imports System.IO
Imports System.IO.File
Imports System.Net
Imports OPCAutomation


Public Class Service1
    Inherits System.ServiceProcess.ServiceBase

    Dim WithEvents OPCServer As OPCAutomation.OPCServer
    Dim WithEvents ConnectedGroup As OPCAutomation.OPCGroup

    Dim Batch As String
    Dim Group As String
    Dim Press As String
    Dim Line As String
    Dim sWidth As String
    Dim sHeight As String
    Dim sBifold As String
    Dim sCore As String
    Dim StartUp As Integer
    Dim iHandle As Integer
    Dim sError As String

    Dim ItemIds(60) As String
    Dim ServerHandles As Array
    Dim ClientHandles(60) As Integer
    Dim ServerErrors As Array

    Dim SnapServerURL As String = "snapserver"

    Private trd As Thread
    Private Stopping As Boolean = False
    Private StoppedEvent As New ManualResetEvent(False)

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

        EventLog.WriteEntry("PressControlService in OnStart.")

        trd = New Thread(AddressOf ServiceMain)
        trd.IsBackground = True
        trd.Start()

    End Sub

    Protected Overrides Sub OnStop()

        EventLog.WriteEntry("PressControlService in OnStop.")
        Me.Stopping = True
        Me.StoppedEvent.WaitOne()

    End Sub

    Private Sub ServiceMain()

        Dim strOPCServerName As String
        Dim strOPCServerNode As String
        Dim strOPCGroupName As String
        Dim i As Integer

        StartUp = 0
        strOPCServerName = "Kepware.KEPServerEX.V5"
        strOPCServerNode = ""
        strOPCGroupName = "MyGroup"
        Try
            Dim OPCServer As New OPCAutomation.OPCServer
        Catch ex As Exception
            EventLog.WriteEntry(ex.Message & " - New OPC Server")
        End Try

        Try
            OPCServer.Connect(strOPCServerName, strOPCServerNode)
        Catch ex As Exception
            EventLog.WriteEntry(ex.Message & "- OPC Connect Error")
        End Try
    End Sub
End Class

0条回答
登录 后发表回答