1. 程式人生 > >Winphone開發之BackgroupWorker

Winphone開發之BackgroupWorker

BackgroupWorker是非常簡單的非同步任務處理,算是多執行緒操作的入門級吧。

BackgroupWorker最重要的是瞭解裡面的幾個事件,下面選擇幾個來介紹下,全面的介紹還是要看MSDN。

1)DoWork:是BackgroupWorker的核心,非同步操作的主體是在接受的函式裡面完成,注意不要涉及UI操作,在RunWorkerAsync()函式呼叫的時候發生。

2)RunWorkerCompleted:當後臺操作已完成,被終止或者引起異常的時候發生。

3)ProgressChanged:當呼叫ReportProgress()函式的時候會觸發,主要負責UI的更新。

下面是例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using BackgroupWorkerExample.Resources;
using System.ComponentModel;
using System.Threading;

namespace BackgroupWorkerExample
{
    public partial class MainPage : PhoneApplicationPage
    {
        private BackgroundWorker Bw;
        private static int count = 0;

        // 建構函式
        public MainPage()
        {
            InitializeComponent();
            Bw = new BackgroundWorker();

            Bw.DoWork += backgroundWorker_DoWork;
            Bw.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;

            //可以返回工作進度
            Bw.WorkerReportsProgress = true;
            Bw.ProgressChanged += backgroundWorker_ProgressChanged;

            //允許取消
            Bw.WorkerSupportsCancellation = true;

            //開始執行
            Bw.RunWorkerAsync();

        }

        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            Tb.Text = count.ToString();
        }

        private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            Tb.Text = "任務結束!";
        }

        private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (count <= 10)
            {
                Thread.Sleep(1000);
                Bw.ReportProgress(count);
                count++;
            }
        }

    }
}

XAML就不貼了,Tb是一個TextBox。

下面是效果截圖,中間的TextBox中數字會從1每一秒鐘加以,最後加到10然後提示任務結束!


相關推薦

Winphone開發BackgroupWorker

BackgroupWorker是非常簡單的非同步任務處理,算是多執行緒操作的入門級吧。 BackgroupWorker最重要的是瞭解裡面的幾個事件,下面選擇幾個來介紹下,全面的介紹還是要看MSDN。

Winphone開發動態載入XAML

XAML是可以動態載入的,這裡所說的動態載入就是說寫好了一個靜態XAML,然後在執行時用C#載入到相應的地方去。 動態載入XAML注意的幾點: 1)待載入的XAML只能有一個根節點,也就是說不能有多個

Winphone開發資源字典

控制元件的Style前面幾篇部落格有說過了,不過那裡展示的是把Style嵌入到當前的Xaml裡面,這裡顯示怎麼使用資源字典來外接一個Style的檔案,就像CSS一樣引用使用。 首先新建一個XAML作為

Winphone開發非同步任務處理

這一篇只能算是備註,非同步任務這一塊自己還要多複習作業系統。 下面是XAML: <phone:PhoneApplicationPage x:Class="AsyncTask.MainP

微信公眾平臺開發萬能表單

平臺 體驗 src .net 等等 art net 獎勵 功能 微信公眾平臺開發之萬能表單是為了方便我們得到用戶的信息。我們能夠在後臺設置不論什麽須要用戶填寫的信息,比方:電話,姓名,性別,工作等等信息,當然我們也能夠設置一定的獎勵,僅僅要完好這些信息就能夠得到一定

ios開發 -- invalid nib registered for identifier

層級關系 註意 刪除 出現 ide 提示 sta tab 後來 今天在寫代碼的時候,碰到這麼一個問題: invalid nib registered for identifier (重用符) - nib must contain exactly one top level

移動web開發像素和DPR

javascript element 英語單詞 計算機 web開發 定義  像素,又稱畫素,是圖像顯示的基本單位,譯自英文“pixel”,pix是英語單詞picture的常用簡寫,加上英語單詞“元素”element,就得到pixel,故“像素”表示“圖像元素”之意,有時亦被稱為pel(pi

iOS開發視頻根據url獲取第一幀圖片,獲取任一幀圖片

keyword rac onerror 根據 ati parameter all ger mage + (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time { AV

(6)微信二次開發 微信文本消息接口實現

微信 odin link 消息處理 nal puts 算法 帳號 接口實現 p.p1 { margin: 13.0px 0.0px 13.0px 0.0px; text-align: justify; font: 16.0px SimSun } p.p2 { margin:

Android開發getX,getRawX,getWidth,getTranslationX等的區別

save string hlist getwidth sta 是我 touch 項目 寬度 轉載請註明出處:http://blog.csdn.net/dmk877/article/details/51550031 好久沒寫博客了,最近工作確實挺忙的,剛剛結束了一個

微信小程序開發頁面wxml裏面實現循環 wx:for

bin quest span geo back 微信小程序 navi 取數 循環語句 js代碼: Page({ data:{ upploadimagelist:{}, //上報圖片列表 js數組 }}) var uploadimageObj=JSON.parse(

Android應用開發所有動畫使用詳解

factory 技術分享 resource bsp phi 顯示 程序 恢復 分享 題外話:有段時間沒有更新博客了,這篇文章也是之前寫了一半一直放在草稿箱,今天抽空把剩余的補上的。消失的這段時間真的好忙,節奏一下子有些適應不過來,早晨七點四十就得醒來,晚上九點四十才準備下班

Android 開發Windows環境下Android Studio安裝和使用教程(圖文詳細步驟)

9.png 虛擬機 jdk版本 編寫 clip 開發平臺 集成開發 arc 電腦安裝 鑒於谷歌最新推出的Android Studio備受開發者的推崇,所以也跟著體驗一下。 一、介紹Android Studio Android Studio 是一個Android

微信小程序開發三元運算符代替wx.if/wx.else

load == 成功 圖片 運算符 spa asp photos 微信小程序 直接上代碼 實現功能為:當fbphotoFirst為空時,src路徑為“pic/信息反饋1-1_14.png“,並且點擊事件uploadfbphotoFirst有效,否則為路徑fbphotoF

OneNET麒麟座應用開發五:獲取加速度傳感器ADXL345數據

命令 多個 data lag 基本 采集 .cn 端口 成了 由於數據采集站基本都安裝在野外或者樓頂,安裝位置以及震動對檢測數據的準確性有一定影響。所以想要有一個位置狀態數據,正好發現麒麟作上有ADXL345,這樣一個數字輸出的加速度傳感器。如圖中紅框所示: 1、ADXL

bsp開發驅動開發

管理器 特定 事件 drivers 一段時間 服務 orm reg 功能 驅動程序是可以管理虛擬設備或者物理設備,協議,服務等得軟件模塊,操作系統僅僅有通過驅動程序才幹訪問硬件。針對windows ce開發設備驅動。就是通過platform builder創建一個新的平

[轉]Eclipse插件開發基礎篇(1) 插件開發的基礎知識

作用 原本 services 註冊 1-1 啟動 創建 abs class 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/13/eclipse_plugin_1_0_2.html 名詞翻譯   有一些名詞在翻譯的

[轉]Eclipse插件開發基礎篇(3) 插件的測試與調試

case ews ... 有時 sam cancel workbench osgi ring 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JU

[轉]Eclipse插件開發基礎篇(4) OSGi框架

動作 update 執行 創建 class cti 指定 mpc 代碼 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html   1. 什麽是OSGi框架   O

Java進擊C#——應用開發Linq和EF

了吧 -1 擴展 有一點 增刪改 adk 對象 structure mis 本章簡言 上一章筆者對於WinForm開發過程用到的幾個知識點做了講解。筆者們可以以此為開端進行學習。而本章我們來講一個跟ORM思想有關的知識點。在講之前讓我們想一下關於JAVA的hib