我在我的应用程序中使用过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”测试了这个问题。我仍然得到同样的错误。
注意:如果我单独运行应用程序,它运行良好。当我同时运行两个或更多应用程序时,我收到此错误。此错误也没有一直发生。
重现的步骤:
在表单后面的代码中,复制并粘贴以下代码。
Imports OpcLabs.EasyOpc.DataAccessPublic 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
4.在Windows Server 2008 R2 / Windows 7 / XP上的Starup文件夹下复制OPCTest1和OPCTest2应用程序的快捷方式。
注意:错误在“m_objOPCServer = New EasyDAClient”行引发。