我写了一个Excel宏,它每隔3秒就会将excel数据写入一个文本文件。
同时,我用C#语言编写的程序访问由excel宏生成的同一文本文件,然后执行一些处理,然后每5秒输出一次xml文件。
我遇到的问题是,当其他进程访问同一个txt文件时,它有时会导致IoException
。这个问题并不经常发生。现在我在C#程序中使用try...catch
语句并在excel宏中使用On Error
语句来捕获异常以避免停止我的程序。
有没有其他方法可以解决这个问题?
例外: System.IO.IOException:另一个进程使用的文件
答案 0 :(得分:0)
我认为另一个线程已经获取了您正在尝试编写的资源(文件),这会导致IOException。
因此,在这种情况下,我建议您在访问文件时应该使用锁定同步。
这是一个非常好的示例,可以帮助您“如何获取文件并将其锁定以供使用?” - Link
使用此机制锁定文件并等待文件在尝试写入文件时释放。
<强>更新强>
关于引用链接的更多信息。
它只是迭代while循环,直到它打开文件然后调用回调(Action)传递文件实例。
答案 1 :(得分:0)
您的问题是Excel宏和C#程序可能同时写入同一文件。
这里有两个选项,要么找到一种在Excel和应用程序之间同步文件写入的方法。或者您可以在c#应用程序中使用卷影复制编写器(不确定这是否可以在Excel中实现,但只要一个应用程序使用它就足够了,只要它总是使用VSS写入文件)
您可以将AlphaVSS检查为应用程序的VSS处理程序