我在工作中如何解决多线程导致RCW无法释放的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计701个文字,预计阅读时间需要3分钟。
最近在调用一个类库中的方法时遇到了一个问题,异常信息如下:尝试释放正在使用的RCW,活动线程或其他线程上正在使用该RCW。释放RCW的尝试会导致损坏或数据丢失。
最近有个同事在调用一个类库中的方法时遇到了一个问题,异常信息如下:
尝试释放正在使用的RCW,活动线程或其他线程上正在使用该 RCW,释放正在使用的 RCW 的尝试会导致损坏或数据丢失。
该方法中对word文件进行相关了操作,因为我之前也在多线程环境下调用过该方法,并且没遇到这个问题,所以同事让我过去看看怎么回事。这个方法在对文件进行相关操作后,会调用另外一个方法释放word对象,部分代码如下:
Word._Application t = oWord as Word._Application; object oIsSave = false; t.Quit(ref oIsSave, ref oMissing, ref oMissing); System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc); System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord); oWord = null; oDoc = null; GC.Collect(); GC.Collect();
该段代码是为了保证立即释放word对象并关闭word进程。
本文共计701个文字,预计阅读时间需要3分钟。
最近在调用一个类库中的方法时遇到了一个问题,异常信息如下:尝试释放正在使用的RCW,活动线程或其他线程上正在使用该RCW。释放RCW的尝试会导致损坏或数据丢失。
最近有个同事在调用一个类库中的方法时遇到了一个问题,异常信息如下:
尝试释放正在使用的RCW,活动线程或其他线程上正在使用该 RCW,释放正在使用的 RCW 的尝试会导致损坏或数据丢失。
该方法中对word文件进行相关了操作,因为我之前也在多线程环境下调用过该方法,并且没遇到这个问题,所以同事让我过去看看怎么回事。这个方法在对文件进行相关操作后,会调用另外一个方法释放word对象,部分代码如下:
Word._Application t = oWord as Word._Application; object oIsSave = false; t.Quit(ref oIsSave, ref oMissing, ref oMissing); System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc); System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord); oWord = null; oDoc = null; GC.Collect(); GC.Collect();
该段代码是为了保证立即释放word对象并关闭word进程。

