gpt4 book ai didi

c# - IStorage 的复合文件实现是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 12:54:09 24 4
gpt4 key购买 nike

我正在使用来自 C# (StgCreateDocfile) 的 IStorage 复合文件实现。

如果我自己同步读写,从多个线程访问一个 IStorage/IStream 实例是否安全?或者是否有任何 COM 问题可能会在这里出现问题?

例如,我能否安全地调用 EnumElements 以获取存储中的所有流,同时(从不同线程)创建和写入新流?

我已经为我的实现编写了压力测试,它没有显示任何问题,但我需要 100% 确定。我没有在 MSDN 文档中找到此信息。

最佳答案

凝灰岩一号。在 ILockBytes 接口(interface)的文档中有一个关于它的片段。它说 IStorage 和 IStream 的默认实现实现了 IMarshal。如果您遵循 COM 线程规则,这将使它们成为线程安全的。当接口(interface)指针在进程中时,这很容易忘记。您必须使用 CoMarshalInterThreadInterfaceInStream() 或 IGlobalInterfaceTable 之类的东西。您可以通过锁定自己来摆脱不编码的情况。

关于c# - IStorage 的复合文件实现是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/275143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com