2011-03-12 150 views
1

我正在開發Windows Phone 7的twitter應用程序,並且一直在做一些原型設計。在應用程序中縮小某些對象時遇到了問題。下面的代碼只是掛起(沒有動作,搜索不會更新),除非我註釋掉Dispatcher.BeginInvoke(new ThreadStart (doProgressBar));我也嘗試使用後臺工作線程運行doProgressBar(),但效果相同。堅持一個斷點表明它確實擊中了doProgressBar(),這似乎是正常工作。Windows Phone 7線程問題

任何幫助我瞭解什麼是錯的將不勝感激。我不明白爲什麼我至少看不到進度條更新。我也很困惑爲什麼主線程在另一個線程中運行時會掛起。可能有一些關於我需要了解的移動應用程序中的線程?

public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void ProcessIncommingSearch(TwitterSearchResult searchResult, TwitterResponse response) 
    { 
     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      foreach (var status in searchResult.Statuses) 
      { 
       TwitterStatus inline = status; 
       Tweet tweet = new Tweet(inline); 
       Dispatcher.BeginInvoke(() => lboxTweets.Items.Add(tweet)); 
      } 
     } 
    } 

    private void image1_ManipulationStarted(object sender, ManipulationStartedEventArgs e) 
    { 
     Dispatcher.BeginInvoke(() => lboxTweets.Items.Clear()); 
     Dispatcher.BeginInvoke(new ThreadStart (doProgressBar)); 
     TwitterService ts = GlobalVariables.Service(); 
     ts.Search(txtSearch.Text, ProcessIncommingSearch); 
    } 

    private void doProgressBar() 
    { 
     while (progressBar1.Value <= 100) 
     { 
      progressBar1.Value += 1; 
     } 
    } 

    private void txtSearch_GotFocus(object sender, RoutedEventArgs e) 
    { 
     txtSearch.Text = ""; 
    } 

    private void txtPage_ManipulationStarted(object sender, ManipulationStartedEventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
+0

您是否使用silverlight工具包中的常規進度條或性能進度條?它是什麼TwitterService?自制或現有的圖書館? – 2011-03-12 12:27:50

+0

這裏是進度條的xaml 。 Twitterservice來自tweetsharp庫。它工作正常,沒有進度條更新。 – 2011-03-12 17:23:20

回答

1

我在這裏認識你的代碼有點困難,但是當你調用Dispatcher.BeginInvoke(new ThreadStart (doProgressBar));看起來你是從UI線程調用一個新的線程。這意味着doProgressBar實際上並未在UI線程上運行,因此您可能直到它完成並且UI線程觸發更新之後纔會看到任何更新。

此外,您的代碼將從progressBar.Value旋轉到記錄時間內的一百次,可能比您能夠看到它更新更快。

此外,你提到註釋出Dispatcher.BeginInvoke(() => doProgressBar()); - 我沒有看到你的代碼中的任何地方。你確定你發佈了正確的版本嗎?

+0

我已經更新了代碼。我嘗試了幾種不同的方法調用該方法,並將錯誤的方法留下!它並不像我所說的那樣完整。我不明白爲什麼。 – 2011-03-12 17:20:28