System.TypeInitializationException:' OpcLabs.EasyOpc.DataAccess.EasyDAClient'的类型初始值设定项。抛出一个例外

时间:2014-05-21 16:47:41

标签: vb.net .net-assembly plc opc

我在我的应用程序中使用过OPC Web客户端3.02。通常,我在系统启动时启动了5到6个应用程序。一切正常,没有任何问题。

现在我将我的应用程序升级到Quick OPC Classic 5.12.1308.1

如果我在系统启动时启动所有6个应用程序(即所有6个应用程序同时启动),我会收到以下错误。

例外文字:

  

System.TypeInitializationException:'OpcLabs.EasyOpc.DataAccess.EasyDAClient'的类型初始值设定项引发异常。 ---> System.IO.FileLoadException:无法加载文件或程序集'file:/// C:\ Documents and Settings [user] \ Local Settings \ Temp \ x86_OpcLabs.EasyOpcClassicRaw_5.12.1396.1.dll'或其依赖项之一。该进程无法访问该文件,因为该文件正由另一个进程使用。

     

(HRESULT异常:0x80070020)    文件名:'file:/// C:\ Documents and Settings [user] \ Local Settings \ Temp \ x86_OpcLabs.EasyOpcClassicRaw_5.12.1396.1.dll'    在System.Reflection.Assembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark& stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)

     

at System.Reflection.Assembly.nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark& stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)

     

在System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark& stackMark,Boolean forIntrospection)

     

at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile,Evidence securityEvidence,Byte [] hashValue,AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection,StackCrawlMark& stackMark)

     

在System.Reflection.Assembly.LoadFrom(String assemblyFile)

     

在OpcLabs.BaseLib.AssemblyExtension.LoadFrom(String assemblyFile,String requesPath)

     

在OpcLabs.BaseLib.AssemblyLoader.LoadFromManifestResourceThroughFile(程序集manifestAssembly,String resourceName,String fileName,Assembly requesAssembly)

     

在OpcLabs.BaseLib.AssemblyLoader.LoadFromManifestResource(程序集manifestAssembly,AssemblyName assemblyName,Assembly requesAssembly)

     

在OpcLabs.BaseLib.AssemblyLoader.InternalLoad(AssemblyName assemblyName,Assembly requesAssembly)

     

在OpcLabs.BaseLib.AssemblyLoader.LoadExtended(AssemblyName assemblyName,Assembly requesAssembly)

     

在OpcLabs.EasyOpc.Assemblies.get_EasyOpcClassicNetRaw()

     

在OpcLabs.EasyOpc.DataAccess.EasyDAClient..cctor()

我用最新版本的“Quick OPC Classic 5.12.1396.1”和“Quick OPC Classic 5.20.1016.1”测试了这个问题。我仍然得到同样的错误。

注意:如果我单独运行应用程序,它运行良好。当我同时运行两个或更多应用程序时,我收到此错误。此错误也没有一直发生。

重现的步骤:

  1. 创建VB.NET应用程序并添加参考EasyOPC.NET库。
  2. 在表单后面的代码中,复制并粘贴以下代码。

    Imports OpcLabs.EasyOpc.DataAccess

    Public Class OPCTest1 Public m_objOPCServer As EasyDAClient

    Private Sub OPCTest1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        m_objOPCServer = New EasyDAClient
    End Sub
    

    End Class

    1. 以同样的方式创建另一个VB.NET应用程序'OPCTest2'并按照相同的步骤。
    2. 4.在Windows Server 2008 R2 / Windows 7 / XP上的Starup文件夹下复制OPCTest1和OPCTest2应用程序的快捷方式。

      1. 重新启动您的计算机。
      2. 注意:错误在“m_objOPCServer = New EasyDAClient”行引发。

0 个答案:

没有答案