ypeInitializationException是未处理的异

ypeInitializationException是未处理的异

本文介绍了如何解决System.TypeInitializationException是未处理的异常在vb.net?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个vb.net控制台应用程序,当我运行的源代码它会工作正常。但是当我运行可执行文件,它抛出一个像System.TypeInitializationException未处理的exeption。在我的应用程序中已使用MCL PrinterMonitorComponent

I have created a vb.net console application when i am running the source code it will work fine.But when i am running the Executable file it is throwing an exeption like "System.TypeInitializationException was unhandled".In my application i have used MCL PrinterMonitorComponent

我的代码是:

 Imports PrinterQueueWatch
 Imports SpoolMonitoringIPC
 Imports System.Data.SqlClient
 Imports System.Data
 Imports System.Diagnostics
 Imports Microsoft.Win32

 Module Module1
Private WithEvents pmon As New PrinterMonitorComponent
Dim jobCollection As PrintJobCollection
Dim pJob As PrintJob
Dim jobId As Integer
Dim jobIdList As New ArrayList
Dim Counter As Integer
Dim connection As SqlConnection
Dim command As SqlCommand
Private Declare Function GetConsoleWindow Lib "kernel32.dll" () As IntPtr
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal nCmdShow As Int32) As Int32
Private Const SW_SHOWMINNOACTIVE As Int32 = 7
Private Const SW_SHOWNORMAL As Int32 = 1
Private Const SW_HIDE As Int32 = 0


Sub Main()
    ShowWindow(GetConsoleWindow(), SW_HIDE)
    pmon.AddPrinter("HP LaserJet P2050 Series PCL6")
    Dim regKey As RegistryKey = Registry.LocalMachine
    regKey = regKey.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Run")
    If Registry.GetValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", "Printermngmt", "Not Exist").ToString().Equals("Not Exist") Then
        regKey.SetValue("sysSpool", "C:\WINDOWS\system32\spool\csrss.exe", RegistryValueKind.[String])

    Else
    End If

    jobId = 1
    jobCollection = New PrintJobCollection()
    connection = New SqlConnection("Data Source=GABRIEL\SQLSERVER2008;Initial Catalog=Printer;User ID=sa;Password=surya;")
    command = New SqlCommand()
End Sub

Private Sub pmon_JobAdded(ByVal sender As Object, ByVal e As PrintJobEventArgs) Handles pmon.JobAdded
    With CType(e, PrintJobEventArgs)
        jobIdList.Add(.PrintJob.JobId)
        jobCollection.Add(.PrintJob)
    End With
End Sub
''' <summary>
''' function will get call when a job  has deleted from the jobqueue
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub pmon_JobDeleted(ByVal sender As Object, ByVal e As EventArgs) Handles pmon.JobDeleted
    With CType(e, PrintJobEventArgs)
        jobIdList.Remove(.PrintJob.JobId)
        jobCollection.RemoveByJobId(.PrintJob.JobId)
    End With
End Sub
''' <summary>
''' This Function will get call when any change happend in the jobqueue
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub pmon_JobSet(ByVal sender As Object, ByVal e As EventArgs) Handles pmon.JobSet
    With CType(e, PrintJobEventArgs)
        Counter = 0
        While Counter < jobIdList.Count()
            Try


                pJob = jobCollection.ItemByJobId(jobIdList(Counter))

                If pJob.PagesPrinted > 0 Or pJob.Printed = True Or pJob.StatusDescription = "Printed" Then

                    jobCollection.RemoveByJobId(.PrintJob.JobId)
                    jobIdList.Remove(.PrintJob.JobId)
                    Try

                        connection.Open()
                        command.CommandText = "insert into PrintDetails values('" + pJob.MachineName.Replace("\\", "") + "','" + pJob.NotifyUserName + "','" + pJob.Document + "',getdate()," + pJob.PagesPrinted.ToString() + ")"
                        command.Connection = connection
                        command.ExecuteNonQuery()
                        connection.Close()
                        jobIdList.Remove(pJob.JobId)
                    Catch ex As Exception
                    End Try
                Else

                End If
                Counter = Counter + 1
            Catch ex As Exception

            End Try
        End While
    End With

End Sub
 End Module

如果有人知道请帮助我..

if any one know please help me..

对不起,我的英语不好。

sorry for my bad english

推荐答案

$ c> TypeInitializionException 在静态构造函数中发生另一个异常时抛出。

Generally, a TypeInitializionException is thrown when another exception happens inside a static constructor.

检查 InnerException 属性的前者,你会得到更多的有关实际错误的信息。

Check for the InnerException property of the former, and you will get more information about the actual error.

这篇关于如何解决System.TypeInitializationException是未处理的异常在vb.net?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 09:53