[英]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.