我不認爲我已經完全找到了我正在尋找的東西,並且不確定是否可能......我已經與後臺工作人員合作完成流程,並且在某些「 ProgressChanged「事件來從後臺工作者提取消息並更新給定的窗口對話框。沒問題。創建新窗口,同時來自後臺工作人員
新項目...在我試圖在後臺工作器上運行的某個過程中,根據某些條件,我需要它在恢復其操作之前實際調用新窗口對話框以獲取用戶輸入。 。在僞格式..
Start Window
Click Button For Action
Create BackgroundWorker (BGW) and enable progress changed
Link BGW "ProgressChanged" to CurrentWindowCheckProgress method
run BGW process
在BGW,在一定條件下,我更新進度並具有旗幟的BGW,我需要特定對話X要被顯示給用戶。因此,通過ReportProgress(),CurrentWindowCheckProgress方法的鉤子被觸發(在UI線程上)。此方法看到該標誌並需要創建一個新的Window(),從中獲得答案,然後返回到BGW線程繼續。
到目前爲止,所有的邏輯工作按計劃進行,但我得到一個錯誤
「調用線程必須爲STA,因爲許多UI組件都需要這個。」
那麼,我需要做些什麼來向用戶顯示我的臨時表格「TestPromptWindow」。
這是C#,WPF,VS2010,.NET 4.0
你可以發佈你用來顯示TestPromptWindow的代碼嗎? –
它肯定聽起來不像你實際使用ProgressChanged事件。不能像你所描述的那樣工作,調用ReportProgress()不會阻止BGW線程。您將不得不在工作人員中使用Dispatcher.Invoke()。 –