HTML实时显示任务状态,如何监视后台任务进度和完成 (HTML)
如何監(jiān)視后臺(tái)任務(wù)進(jìn)度和完成 (HTML)
12/11/2015
本文內(nèi)容
[ 本文適用于編寫(xiě) Windows 運(yùn)行時(shí)應(yīng)用的 Windows 8.x 和 Windows Phone 8.x 開(kāi)發(fā)人員。如果你要針對(duì) Windows 10 進(jìn)行開(kāi)發(fā),請(qǐng)參閱 最新文檔 ]
介紹應(yīng)用如何識(shí)別后臺(tái)任務(wù)報(bào)告的進(jìn)度和完成。 后臺(tái)任務(wù)從應(yīng)用中分離開(kāi)來(lái),并且它們單獨(dú)運(yùn)行,但可以通過(guò)應(yīng)用代碼監(jiān)視后臺(tái)任務(wù)進(jìn)度和完成。若要進(jìn)行該操作,應(yīng)用訂閱已向系統(tǒng)注冊(cè)的后臺(tái)任務(wù)事件。
你需要了解的內(nèi)容
技術(shù)
先決條件
本主題假定你擁有一個(gè)注冊(cè)后臺(tái)任務(wù)的應(yīng)用。若要快速構(gòu)建后臺(tái)任務(wù),請(qǐng)閱讀快速入門(mén):創(chuàng)建和注冊(cè)后臺(tái)任務(wù)。有關(guān)條件和觸發(fā)器的詳細(xì)信息,請(qǐng)參閱使用后臺(tái)任務(wù)支持應(yīng)用。
說(shuō)明
步驟 1:
創(chuàng)建一個(gè)函數(shù),該函數(shù)將連接到事件處理程序以完成后臺(tái)任務(wù)。此函數(shù)必須采用一個(gè) BackgroundTaskCompletedEventArgs 對(duì)象且不采用任何其他參數(shù)。
如果你要在本地注冊(cè)某個(gè)函數(shù),則可以使用以下內(nèi)存占用:
function OnCompleted(args)
{
// TODO: Add code that deals with background task completion.
}
然后你可以像這樣向你的 BackgroundTaskRegistration 對(duì)象(該對(duì)象是通過(guò)使用對(duì)注冊(cè)函數(shù)的成功調(diào)用來(lái)獲取的)注冊(cè)它:
backgroundTaskRegistration.addEventListener("completed", onCompleted);
你將需要添加代碼,該代碼將處理后臺(tái)任務(wù)完成。
例如,后臺(tái)任務(wù)示例使用 LocalSettings 中保存的完成狀態(tài)更新 UI:
function OnCompleted(args)
{
//
//
//
backgroundTaskName = this.name;
//
// Call a method to update the UI (beyond the scope of this example).
//
UpdateUI();
}
強(qiáng)大的應(yīng)用可以通過(guò)調(diào)用 CheckResult 來(lái)檢查后臺(tái)任務(wù)引發(fā)的異常。
可以對(duì)后臺(tái)任務(wù)示例進(jìn)行如下修改,以處理后臺(tái)任務(wù)引發(fā)的異常。
function OnCompleted(task, args)
{
var settings = ApplicationData.Current.LocalSettings;
var key = task.TaskId.ToString();
try
{
args.CheckResult();
BackgroundTaskSample.SampleBackgroundTaskStatus = settings.Values[key].ToString();
}
catch (Exception ex)
{
BackgroundTaskSample.SampleBackgroundTaskStatus = "Error: " + ex.Message;
}
UpdateUI();
}
步驟 2:
對(duì) OnProgress 后臺(tái)任務(wù)事件處理程序方法使用以下足跡:
function OnProgress(task, args)
{
// TODO: Add code that deals with background task progress.
}
向處理后臺(tái)任務(wù)完成的事件處理程序中添加代碼。
例如,后臺(tái)任務(wù)示例使用通過(guò) args 參數(shù)傳遞的進(jìn)度狀態(tài)更新 UI:
function OnProgress(task, args)
{
var progress = "Progress: " + args.Progress + "%";
BackgroundTaskSample.SampleBackgroundTaskProgress = progress;
UpdateUI();
}
步驟 3:
使用新的和現(xiàn)有的后臺(tái)任務(wù)注冊(cè)事件處理程序函數(shù)。
當(dāng)應(yīng)用第一次注冊(cè)后臺(tái)任務(wù)時(shí),應(yīng)用應(yīng)該注冊(cè)以在任務(wù)運(yùn)行(同時(shí)應(yīng)用仍然在前臺(tái)處于活動(dòng)狀態(tài))時(shí)接收它的進(jìn)度和完成更新。
例如,后臺(tái)任務(wù)示例在它觸發(fā)的每個(gè)后臺(tái)任務(wù)上調(diào)用以下函數(shù):
function AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task)
{
task.Progress += new BackgroundTaskProgressEventHandler(OnProgress);
task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
}
當(dāng)應(yīng)用啟動(dòng)或?qū)Ш降胶笈_(tái)任務(wù)狀態(tài)相關(guān)的新頁(yè)面時(shí),它應(yīng)用獲取檔期已注冊(cè)的后臺(tái)任務(wù)列表并將它們與進(jìn)度和完成事件處理程序函數(shù)關(guān)聯(lián)。應(yīng)用程序當(dāng)前已注冊(cè)的后臺(tái)任務(wù)列表位于 BackgroundTaskRegistration.AllTasks 屬性中。
例如,后臺(tái)任務(wù)示例在導(dǎo)航到 SampleBackgroundTask 頁(yè)面時(shí)使用以下代碼附加事件處理程序:
function OnNavigatedTo(NavigationEventArgs e)
{
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == BackgroundTaskSample.SampleBackgroundTaskName)
{
AttachProgressAndCompletedHandlers(task.Value);
BackgroundTaskSample.UpdateBackgroundTaskStatus(BackgroundTaskSample.SampleBackgroundTaskName, true);
}
}
UpdateUI();
}
相關(guān)主題
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的HTML实时显示任务状态,如何监视后台任务进度和完成 (HTML)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html5 接东西游戏,html5手机触
- 下一篇: 织梦自定义字段html,织梦dedecm