0

我需要使用阻塞集合,以便可以异步调用委托。不幸的是,委托有两个参数,由一个结构和一个附加字符串组成。使用该结构是因为它是通过 Interop 调用外部 c 函数的结果。
现在我正在寻找一种在使用阻塞集合时避免复制结构的方法。
目前我的代码如下所示:

ConsumerQueue.Enqueue(new StructTransfer(structValue, stringValue));

消费者然后解包 StructTransfer。

StructTransfer 目前看起来像这样

public struct Transfer{
    public StructValue structValue;
    public string stringValue;
    public Transfer(StructValue structValue, string stringValue){
      this.structValue=structValue;
      this.stringValue = stringValue;
    }
}

有没有一种简单的方法可以使用指针来避免构造函数中的复制语句,以便我可以轻松地使用阻塞集合?

4

1 回答 1

0

最好的方法是先创建传输类。
使用该结构作为传输类的一个字段,并在调用互操作时使用该字段作为参数。我想在这种情况下没有办法避免公共领域。
因此,应尽量减少内存使用量,减少一份副本的发生。

于 2013-01-31T11:42:29.253 回答