我已经建立了一个WCF主机,它在一个对象的实例上运行。当从WCF客户端调用以下方法时,会抛出错误“调用线程无法访问此对象,因为不同的线程拥有它”。调用线程不能访问这个对象,因为不同的线程拥有它
public List<PrintQueueData> getPrintQueues()
{
List<PrintQueueData> resultQueues = new List<PrintQueueData>();
List<PrintQueue> queues = queueCollection;
foreach (PrintQueue q in queues)
{
// This throws an exception
resultQueues.Add(new PrintQueueData(q.HostingPrintServer.ToString(), q.Name));
// This does NOT throw any exceptions
resultQueues.Add(new PrintQueueData("1", "2");
}
return resultQueues;
}
我该怎么办才能纠正这个错误?
编辑:queueCollection是包含此方法的类的字段。
编辑:queueCollection是在这个类的开始处声明的,它的类型是printqueue的列表,和它在这个方法中分配的相同。
编辑:我有一个计时器运行使用queueCollection,但是,我将Timer.Enabled设置为false,错误仍然发生。
“queueCollection”从哪里来? – 2011-03-11 01:16:49
您是在某处使用BackgroundWorker或线程吗? – 2011-03-11 02:54:01
我有一个定时器运行使用queueCollection,但是,我仍然收到错误后设置Timer.Enabled为false。 – mike9182 2011-03-11 14:34:18