簡體   English   中英

我應該為此使用Background Worker嗎?

[英]Should I be using Background Worker For this?

我正在構建Windows Phone 7應用程序,並且在視圖上有一個刷新按鈕。 我也有一個標簽,說明最近一次刷新視圖的時間。

我想每分鍾更新一次標簽,但不確定使用什么? 我應該使用常規線程還是后台工作者?

在wp7中,我從未涉足太多線程。

都不是。 經過一段時間后,請使用Timer定期執行操作。

我還沒有嘗試過自己,但我想你應該能夠使用Microsoft.Bcl.Async與WP7.1 +(基於 )。 但是,您必須在項目中使用VS2012 +,VS2010不適合。

然后,代碼將如下所示簡單,並且將在主UI線程上執行而不會損害UI響應能力。

async Task UpdateUI(CancellationToken token)
{
    var i = 0;
    while (true)
    {
        await TaskEx.Delay(1000, token); // pause for 1s
        this.Label.Text = "Updated: " + i++;
    }
}

您可以使用DispatcherTimer每分鍾調用一次DoStuff方法,並以當前時間更新標簽內容。

using System; 
using Microsoft.Phone.Controls; 
using System.Windows.Threading;  
namespace Clock 
{
    public partial class MainPage : PhoneApplicationPage
    {
        DispatcherTimer refreshTimer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(60) };

        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            DoStuff();

            this.refreshTimer.Tick += new EventHandler(RefreshTimer_Tick);
            refreshTimer.Start();
        }

        private void RefreshTimer_Tick(object sender, EventArgs e)
        {
            DoStuff();
        }

        private void DoStuff()
        {
            //Do stuff
            lastUpdateLabel.Content = DateTime.Now.ToLongTimeString();
        }
    }
}

所有調用都在UIThread中進行,因此,如果您需要長時間運行,則仍需要在DoStuff方法上創建后台工作程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM