개체의 인스턴스에서 작동하는 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;
}
이 오류를 해결하려면 어떻게해야합니까?
EDIT : queueCollection은이 메서드가 포함 된 클래스의 필드입니다.
EDIT : queueCollection은이 클래스의 시작 부분에서 선언되며 형식은이 메서드에서 할당 된 것과 같은 인쇄 큐 목록입니다.
편집 : 나는 timerCollection을 사용하는 타이머를 실행했지만 Timer.Enabled를 false로 설정하고 오류가 여전히 발생했습니다.
"queueCollection"의 출처는 어디입니까? –
BackgroundWorker 또는 Thread를 어딘가에 사용하고 있습니까? –
그러나 queueCollection을 사용하는 타이머를 실행했지만 Timer.Enabled를 false로 설정 한 후에도 오류가 발생했습니다. – mike9182