如何将两个不同类型的变量打包成一个对象变量?

时间:2014-07-15 20:52:35

标签: c# .net multithreading queue

我正在编写多线程应用程序。

我需要这种功能:一个method#1将数据放入Queue<>method#2从队列中获取此数据并处理它。

Method#2有两个参数:XElementFileInfo。如何将这两个变量存储在Queue<>中以供进一步使用?

3 个答案:

答案 0 :(得分:5)

使用Tuple<XElement, FileInfo>。像这样实例化:

Tuple<XElement, FileInfo> tuple = new Tuple<XElement, FileInfo>(elem, file);

然后检索它的值:

XElement elem = tuple.Item1;
FileInfo file = tuple.Item2;

因此,您可以将Tuple<XElement, FileInfo>放入Queue<Tuple<XElement, FileInfo>>,然后将元组出列并将其项目传递给方法#2。

答案 1 :(得分:3)

您可以创建一个具有XElement和FileInfo两个属性的类,然后将该类的实例存储在队列中。

public MyClass {
   public XElement xElement;
   public FileInfo fileInfo;
}

然后使用它:

    Queue<MyClass> queue = new Queue<MyClass>();
    foreach (MyClass instance in queue) {
    Method#2(instance.xElement, instance.fileInfo);
}

答案 2 :(得分:1)

public Queue<(XElement, FileInfo)> data= new Queue<(XElement, FileInfo)>();

我正在将这种方法用于我的多线程数据系统。效果很好。