Silverlight:Downloader的使用(event篇)


(1)Downloader的使用

首先我們看什么是Downloader,就是一個為描述Silverlight plug-in下載功能的集合.Downloader能異步的通過HTTP GET Request下載內容.他是一個能幫助Silverlight下載內容的一個對象,這些下載內容包括(XMAL content,JavaScript content,ZIP packages,Media,images).當Silverlight plug-in安裝時候,并不能完全提供所有應用程序的內容,但在一經請求這些內容就會響應應用程序的需要.更重要的是,你能在呈現內容后它仍然能被使用,而且不需要刷新業面.Downloader對象提供了初始數據傳輸的功能,通過事件和狀態性質監控數據傳輸過程,并重新找到數據過程.

這個Downloader 對象的屬性和方法模仿XMLHttpRequest(XHR)的一系列的APIs.XHR提供 JavaScript和其他Web瀏覽器腳本語言來傳輸和操作通過HTTP來于web Server端的XML數據.

通常你不詳細指定Downloader 的URI;但你能指定URIs,并使用URI的配置是最初在安裝Silverlight plug-in所指定主機器的HTML頁面的地址.Downloader不能被用來跨域下載文件(內容不是來于最初始主機也面的地址).

下面給出一個事列顯示怎樣create, initialize, and execute 一個下載請求.為一個 被操作者掛上兩個事件是(Completed, DownloadProgressChanged),但被操作者沒有被指定,還有DownloadFailed也沒有被定義.所以你要自己寫一個.

//?Event?handler?for?initializing?and?executing?a?download?request.
function?onMouseLeftButtonUp(sender,?eventArgs)
{
????
//?Retrieve?a?reference?to?the?plug-in.
????var?slPlugin?=?sender.getHost();

????
//?Create?a?Downloader?object.
????var?downloader?=?slPlugin.createObject("downloader");

????
//?Add?DownloadProgressChanged?and?Completed?events.
????downloader.addEventListener("downloadProgressChanged",?onDownloadProgressChanged);
????downloader.addEventListener(
"completed",?onCompleted);

????
//?Initialize?the?Downloader?request.
????//?NOTE:?downloader?APIs?disallow?file:\\?scheme
????//?you?must?run?this?sample?over?localhost:?or?off?a?server?or?the?following?call?will?fail

????downloader.open(
"GET",?"promo.png");

????
//?Execute?the?Downloader?request.
????downloader.send();
}



(2):DownloadFailed

??? 當下載請求完成時沒有下載內容時觸發.

參數:
? 參數名描述??
?類型
? downloaderObject
?一個Downloader對象.Object
? token?是一個函數的返回值,能隨意的保留如變量.如你想要調用RemoveEventLister去刪除這個被操作者,你將需要這個參數? integer
? eventhandlerFunction?在腳本中被定義的你的事件函數名,當使用AddEventListener pararmeter,就不需要提供函數名.?Object
事件參數:
? sender
? 識別調用事件的對象?
?Object
? eventArgs??
?參數始終為 null?? ?Object
???
???? ????
DownloadFailed 當下載請求完成時沒有下載內容時觸發.異步的調用Downloader的Send方法.主要由Status和StatusText的屬性來反應HTTP的狀態值來確定錯誤的下載請求.


你還能在腳本中添加一個事件名來添加操作者:
downloaderObject.AddEventListener("DownloadFailed",?"eventhandlerFunction")

這里就回返回一個token;刪除操作時這個token就不是絕對需要,在這里是添加操作.所以需要.

DownloadFailed當下載請求完成時沒有下載內容時觸發,你使用一個Completed事件去取得Downloader對象所響應的文本.當你正在下載發生突發的錯誤,你將還是能添加一個DownloadFailed事件到你的應用程序和為DownloadFailed事件寫入適當代碼,最終解決你的內容不存在的問題.


(3)DownloadProgressChanged

在求情下載期間被出發.

參數:
? 參數名描述??
?類型
? downloaderObject
?一個Downloader對象.Object
? token?是一個函數的返回值,能隨意的保留如變量.如你想要調用RemoveEventLister去刪除這個被操作者,你將需要這個參數? integer
? eventhandlerFunction?在腳本中被定義的你的事件函數名,當使用AddEventListener pararmeter,就不需要提供函數名.?Object
事件參數:
? sender
? 識別調用事件的對象?
?Object
? eventArgs??
?參數始終為 null?? ?Object
???
???? ????

DownloadProgressChanged 事件能被使用監控下載進程.DownloadProgressChanged是按照被下載內容總長度的0.05顯示,最高可達到1.0.當下載狀態改變時都將出發Completed 或DownloadFailed.

你還能在腳本中添加一個事件名來添加操作者:
downloaderObject.AddEventListener("DownloadProgressChanged",?"eventhandlerFunction")

語法這里還是就回返回一個token;刪除操作時這個token就不是絕對需要,在這里是添加操作.所以需要.

在事件數據中這個進程要數不能被轉載.取而代之的是使用Downloader對象的屬性觸發事件.That object is always the sender of the event.
------------------------------------------------------------
//?Event?handler?for?updating?visual?progress?indicator
function?onDownloadProgressChanged(sender,?eventArgs)
{
????
//?Calculate?the?downloaded?percentage.
????var?percentage?=?Math.floor(sender.downloadProgress?*?100);

????
//?Update?the?Rectangle?and?TextBlock?objects?of?the?visual?progress?indicator.
????progressText.text?=?percentage?+?"%";
????progressRectangle.width?
=?percentage?*?2;
}



(4)Completed

在請求下載內容完成時觸發.


Completed在請求下載內容完成時觸發.異步的調用Downloader的Send方法.主要由Status和StatusText的性質來反應HTTP的狀態值來確定錯誤的下載請求.

你還能在腳本中添加一個事件名來添加操作者:
downloaderObject.AddEventListener("Completed",?"eventhandlerFunction")

語法這里還是就回返回一個token;刪除操作時這個token就不是絕對需要,在這里是添加操作.所以需要.

Completed在請求下載內容完成時觸發.并返回下載內容,你使用一個Completed事件去取得Downloader對象所響應的文本,在選擇使用ResponseText性質或GetResponseText方法時.依賴于下載方式是否以包的形式,如是包的形式你就要指定part.
事例是定義一個取得下載內容的Completed事件函數,是單個文件下載(沒有使用包)
//?Event?handler?for?the?Completed?event.
function?onCompleted(sender,?eventArgs)
{
????
//?Retrieve?downloaded?XAML?content.
????var?xamlFragment?=?sender.ResponseText;

????
//?Create?the?objects?from?the?XAML?content.
????var?plugin?=?sender.getHost();
????
var?button?=?plugin.content.createFromXaml(xamlFragment);

????
//?Add?downloaded?XAML?content?to?the?root?Canvas?of?the?plug-in.
????var?rootCanvas?=?sender.findName("rootCanvas");
????rootCanvas.children.add(button);
}



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388618.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

決策樹信息熵計算_決策樹熵|熵計算

決策樹信息熵計算A decision tree is a very important supervised learning technique. It is basically a classification problem. It is a tree-shaped diagram that is used to represent the course of action. It contains the nodes and leaf nodes. it uses these nod…

多虧了這篇文章,我的開發效率遠遠領先于我的同事

歡迎大家前往騰訊云社區,獲取更多騰訊海量技術實踐干貨哦~ 本文由獨木橋先生發表于云社區專欄 介紹 如果您有從Linux服務器上的源代碼安裝軟件的經驗,您可能會遇到make實用程序。該工具主要用于自動編譯和構建程序。它允許應用程序的作者輕松地布置構建該…

Free SQLSever 2008的書

Introducing SQL Server 2008 http://csna01.libredigital.com/?urss1q2we6這是一本提供自由使用書!我把它翻譯,或轉送有什么關系!這樣的書還是有幾本吧,Introducing Linq,Introducting Silverlight,都是啊!嘿嘿。。。…

流式數據分析_流式大數據分析

流式數據分析The recent years have seen a considerable rise in connected devices such as IoT [1] devices, and streaming sensor data. At present there are billions of IoT devices connected to the internet. While you read this article, terabytes and petabytes…

oracle failover 區別,Oracle DG failover 實戰

Oracle dataguardfailover實戰操作步驟備庫:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP;添加臨時文件,刪除老的臨時文…

Jenkins自動化CI CD流水線之8--流水線自動化發布Java項目

一、前提 插件:Maven Integration plugin 環境: maven、tomcat 用的博客系統代碼: git clone https://github.com/b3log/solo.git 遠端git服務器: [gitgit repos]$ mkdir -p solo [gitgit repos]$ cd solo/ [gitgit solo]$ git --…

oracle數據泵導入很慢,impdp導入效率的問題

內網從一臺服務器A導入到另一臺服務器B,38G的數據半個多小時才導了一個表。原來B庫上是有數據的,是不是因為TABLE_EXISTS_ACTIONREPLACE 導致速度慢了?parallel8也不知道會不會設高了。SQL> show parameter cpuNAME …

BZOJ2597 WC2007剪刀石頭布(費用流)

考慮使非剪刀石頭布情況盡量少。設第i個人贏了xi場,那么以i作為贏家的非剪刀石頭布情況就為xi(xi-1)/2種。那么使Σxi(xi-1)/2盡量小即可。 考慮網絡流。將比賽建成一排點,人建成一排點,每場未確定比賽向比賽雙方連邊,確定比賽向贏…

數據科學還是計算機科學_數據科學101

數據科學還是計算機科學什么是數據科學? (What is data science?) Well, if you have just woken up from a 10-year coma and have no idea what is data science, don’t worry, there’s still time. Many years ago, statisticians had some pretty good ideas…

開機流程與主引導分區(MBR)

由于操作系統會提供所有的硬件并且提供內核功能,因此我們的計算機就能夠認識硬盤內的文件系統,并且進一步讀取硬盤內的軟件文件與執行該軟件來完成各項軟件的執行目的 問題是你有沒有發現,既然操作系統也是軟件,那么我的計算機優勢…

膚色檢測算法 - 基于二次多項式混合模型的膚色檢測。

由于CSDN博客和博客園的編輯方面有不一致的地方,導致文中部分圖片錯位,為不影響瀏覽效果,建議點擊打開鏈接。 由于能力有限,算法層面的東西自己去創新的很少,很多都是從現有的論文中學習,然后實踐的。 本文…

oracle解析儒略日,利用to_char獲取當前日期準確的周數!

總的來說周數的算法有兩種:算法一:iw算法,每周為星期一到星期日算一周,且每年的第一個星期一為第一周,就拿2014年來說,2014-01-01是星期三,但還是算為今年的第一周,可以簡單的用sql函…

密碼機

樹狀數組1 #include<bits/stdc.h>2 using namespace std;3 int x,y,c[200005];4 char str[20];5 int inline read(){6 int x0,f1;7 char chgetchar();8 while(ch<0||ch>9)9 chgetchar(); 10 while(ch>0&&ch<9){ 11 …

js有默認參數的函數加參數_函數參數:默認,關鍵字和任意

js有默認參數的函數加參數PYTHON開發人員的提示 (TIPS FOR PYTHON DEVELOPERS) Think that you are writing a function that accepts multiple parameters, and there is often a common value for some of these parameters. For instance, you would like to be able to cal…

sql management studio 附加mdf文件出錯的解決辦法

將mdf文件所在文件夾的權限改為everyone.&#xff0c;完全控制即可。

oracle raise_application_error,RAISE_ APPLICATION_ ERROR--之異常處理

平時用來測試的異常處理我們都是通過dbms_output.put_line來輸出異常信息&#xff0c;但是在實際的應用中&#xff0c;需要把異常信息返回給調用的客戶端。其實 RAISE_APPLICATION_ERROR 是將應用程序專有的錯誤從服務器端轉達到客戶端應用程序(其他機器上的SQLPLUS或者其他前臺…

金融信息交換協議

隨著網絡的使用&#xff0c;目前所有大型的金融機構都已經實現了自動化和數字化。當中肯定少不了互聯網的加入&#xff0c;那么在這當中&#xff0c;我們主要介紹一下FIX協議。它是由國際FIX協會組織提供的一個開放式協議&#xff0c;目的是推動國際貿易電子化的進程&#xff0…

2018大數據學習路線從入門到精通

最近很多人問小編現在學習大數據這么多&#xff0c;他們都是如何學習的呢。很多初學者在萌生向大數據方向發展的想法之后&#xff0c;不免產生一些疑問&#xff0c;應該怎樣入門&#xff1f;應該學習哪些技術&#xff1f;學習路線又是什么&#xff1f;今天小編特意為大家整理了…

相似鄰里算法_紐約市-鄰里之戰

相似鄰里算法IBM Data Science Capstone ProjectIBM Data Science Capstone項目 分析和可視化與服裝店投資者的要求有關的紐約市結構 (Analyzing and visualizing the structure of New York City in relation to the requirements of a Clothing Store Investor) 介紹 (Introd…

一、面向對象

第一節&#xff1a;面向對象編程1.面向對象三大原則&#xff1a;封裝&#xff1a;就是把客觀事物封裝成抽象的類&#xff0c;并且類可以把自己的數據和方法只讓可信的類或者對象操作&#xff0c;對不可信的進行信息隱藏。繼承&#xff1a;繼承&#xff0c;指可以讓某個類型的對…