首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

读取xml文件发生错误,请教需如何避免.多谢

2012-03-23 
读取xml文件发生异常,请问需如何处理.谢谢.有关调用实时(JIT)调试而不是此对话框的详细信息,请参见此消息

读取xml文件发生异常,请问需如何处理.谢谢.
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.IO.IOException: 文件“change.xml”正由另一进程使用

,因此该进程无法访问该文件。
  在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 

rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, 

SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
  在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare 

share, Int32 bufferSize)
  在 System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
  在 System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type 

ofObjectToReturn)
  在 System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
  在 System.Threading.CompressedStack.runTryCode(Object userData)
  在 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup

(TryCode code, CleanupCode backoutCode, Object userData)
  在 System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback 

callback, Object state)
  在 System.Xml.XmlTextReaderImpl.OpenUrl()
  在 System.Xml.XmlTextReaderImpl.Read()
  在 System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean 

preserveWhitespace)
  在 System.Xml.XmlDocument.Load(XmlReader reader)
  在 System.Xml.XmlDocument.Load(String filename)
  在 比分赔率.Form1.LoadChangeXml(Int64 chindex)
  在 比分赔率.Form1.ChangeXmlbf_Timer_Tick(Object sender, EventArgs e)
  在 System.Windows.Forms.Timer.OnTick(EventArgs e)
  在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
  在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, 

IntPtr lparam)


************** 已加载的程序集 **************
mscorlib
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
比分赔率 3.18
  程序集版本: 1.0.0.0
  Win32 版本: 1.0.0.0
  基本代码: 18.exe
----------------------------------------
Microsoft.VisualBasic
  程序集版本: 8.0.0.0
  Win32 版本: 8.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Micros

oft.VisualBasic.dll
----------------------------------------
System
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.

Windows.Forms.dll
----------------------------------------
System.Drawing
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawin

g.dll
----------------------------------------
System.Configuration
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.

Configuration.dll


----------------------------------------
System.Xml
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/Syst

em.Runtime.Remoting.dll
----------------------------------------
System.Data
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Tra

nsactions.dll
----------------------------------------
System.EnterpriseServices
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/Syst

em.EnterpriseServices.dll
----------------------------------------
mscorlib.resources
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.1433 (REDBITS.050727-1400)
  基本代码: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
  程序集版本: 2.0.0.0
  Win32 版本: 2.0.50727.42 (RTM.050727-4200)
  基本代码: 

file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-

CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。

例如: 

<configuration>
  <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。


[解决办法]
我也没有写过, 不是干肯定
具体的,楼主可以查看一下MSDN ReaderWriterLock类部分

如果楼主要监视文件更改, 可以看看FileSystemWatcher ,效率应该会好点


如果你的读和写实分开的,不是连续的, 参考前2段代码
如果是连续的,可以看看第3个


VB.NET code
Imports SystemImports System.ThreadingImports Microsoft.VisualBasicPublic Class Test        Private rwl As New ReaderWriterLock()      Sub Read(timeOut As Integer)        Try            rwl.AcquireReaderLock(timeOut) '请求读取锁            Try                '读取文件            Finally                 ' 释放读取锁                rwl.ReleaseReaderLock()            End Try        Catch ex As ApplicationException            '请求超时        End Try    End Sub     Sub Write(timeOut As Integer)        Try            rwl.AcquireWriterLock(timeOut) '请求写入锁            Try                '写入文件            Finally                '释放写入锁                rwl.ReleaseWriterLock()            End Try        Catch ex As ApplicationException            ' 超时        End Try    End Sub     Sub ReadandWrite(timeOut As Integer)        Try            rwl.AcquireReaderLock(timeOut)  '请求读取锁            Try                '读取文件                Try            '升级读取锁,为写入锁                    Dim lc As LockCookie = rwl.UpgradeToWriterLock(timeOut)                    Try                       '写入文件                    Finally                        '降级为读取锁                        rwl.DowngradeFromWriterLock(lc)                    End Try                Catch ex As ApplicationException                    ' 升级超时                End Try            Finally                '释放读取锁                rwl.ReleaseReaderLock()            End Try        Catch ex As ApplicationException                    End Try    End Sub   End Class 

热点排行