我有以下代碼:如何在調用長時間運行的進程之前更新視圖模型上的屬性?
Public Sub ExecuteMyCommand
ShowProgressBar=True
CallLongRunningProcess
ShowProgressBar=False
End Sub
要獲取進度在長期運行過程之前,實際上顯示的UI啓動此代碼必須被改寫爲:
Public Async Sub ExecuteMyCommand
ShowProgressBar=True
Await Task.Run(Sub() CallLongRunningProcess)
ShowProgressBar=False
End Sub
現在的問題:
在某些方法中,長時間運行的過程涉及到創建WPF UserControls。這些必須在STA線程上創建。我發現如何做到這一點,但後來我得到一個InvalidOperationException,因爲用戶控件是非UI線程所擁有的。所以,我正在尋找一種方法來在UI線程上調用長時間運行的進程之前更新ShowProgressBar屬性(是的,醜陋的,我知道)。
這是什麼意思'所以,我正在尋找一種方法來更新ShowProgressBar屬性,然後再調用UI線程上的長時間運行的進程「,這只是一個布爾,更新意味着什麼? – Sybren
@Sybren ShowProgressBar屬性在視圖中綁定到ProgressBar.Visibility屬性。對不起,如果不明確。 – Dabblernl