2010-06-30 24 views
1

我在我的WPF項目下面的方法(.NET 4):WPF圖像的可見性是不會改變

private void MyMethod(){ 
    imgMyImage.Visibility = Visibility.Visible; 
    DoWork(); 
    imgMyImage.Visibility = Visibility.Collapsed; 
} 

的圖像是在DockPanel中,我希望它出現,而「DoWork的() 「方法正在執行,但直到」MyMethod()「方法退出後纔會更改狀態。有人可以解釋如何使這項工作正確嗎?

謝謝你的幫助。

+0

你會想在不同的線程中運行它。 – spong 2010-06-30 19:21:39

回答

8

您的「DoWork」方法阻止了UI線程。在它完成之前,UI中的任何內容都不會改變(並且UI將保持無響應狀態)。

更好的選擇是將DoWork推入後臺線程。例如,在.NET 4中使用新的任務框架,你可以這樣寫:

private void MyMethod() 
{ 
    imgMyImage.Visibility = Visibility.Visible; 

    // Create a background task for your work 
    var task = Task.Factory.StartNew(() => DoWork()); 

    // When it completes, have it hide (on the UI thread), imgMyImage element 
    task.ContinueWith(t => imgMyImage.Visibility = Visibility.Collapsed, 
      TaskScheduler.FromCurrentSynchronizationContext()); 
} 
+0

謝謝,裏德 - 幫了我很多! (1) – 2011-08-28 22:51:09