我有以下代碼:非UI「因爲不同的線程擁有它調用線程不能訪問該對象」
var queue = printer.PrintQueue;
var canPrint = ! Dispatcher.CurrentDispatcher.Invoke(()
=> queue.IsPaperJammed || queue.IsOutOfPaper ||
queue.IsInError || queue.HasPaperProblem);
它拋出以下錯誤:
The calling thread cannot access this object because a different thread owns it
我有在UI線程上嘗試了這一點(使用如上所示的調度程序),並且在當前線程(沒有調度程序)上嘗試了它。
有沒有辦法問一個對象哪個線程擁有它?
有一種方法,以確定是否需要Dispatcher.Invoke。這會回答你的問題嗎? – BradleyDotNET
@LordTakkera - 我不確定會這樣,因爲我使用Dispatcher嘗試它,並且出錯,並且兩次都出現同樣的錯誤。我的猜測是,那裏有一個不同的擁有線程。 – Vaccano
什麼是創建'打印機'?我不認爲你可以很容易地找出哪個線程擁有一個對象,但也許我們可以找出哪一個是。 – vcsjones