處理異常說,我有這樣的代碼:與任務
serviceCallFinished = false;
Task.Factory.StartNew(() => {
response = ServiceManager.GeneralService.ServiceMethod(loginName, password);
}).ContinueWith(parentTask => { serviceCallFinished = true; });
while (!serviceCallFinished)
Thread.Sleep(100);
if (response.UserValid) { }
在這種情況下,ServiceMethod
將拋出一個Exception
但從未顯示,而不是我會在response.UserValid
空引用?
爲什麼例外而不是交給我的UI線程?
注意:這是在UI線程上,我的想法是在服務調用期間不阻塞線程。
它不回答你的問題,但請刪除該循環等待完成。使用別的東西(manualResetEvent) –
這裏的主線程是一個UI線程,它不能被阻塞,這就是爲什麼我使用Tread.Sleep。我也不想將方法拆分爲能夠將線程發送到特定的方法。 – Banshee
如果循環的目的是非阻塞的,你肯定是錯誤的:UI線程被阻塞進入睡眠狀態。 –