详解Silverlight中的Downloader对象

Silverlight中有一个Downloader对象,可以用来下载Silverlight应用程序中相应的文件,比如脚本 、媒体文件等等。有了它就可以根据应用程序的具体需要来下载相应的文件,而不必在Silverlight插件 初始化的时候就将整个应用程序所需要的文件全部下载下来。这样不仅可以节省用户下载应用程序所花费 的等待时间,还可以直接在应用程序中动态使用下载下来的内容而无需刷新整个页面。

Downloader对象能够初始化数据传输,监视数据传输的进程,并能很方便的得到所下载的文件。加载 应用程序时的进度条的实现就需要用到Downloader这个对象的强大功能。此外,Downloader对象还可以用 来下载ZIP压缩包,并可以从所下载的ZIP包中获取单个文件。

要使用Downloader对象,首先要使用Silverlight的CreateObject方法在Silverlight插件中创建一个 Downloader的对象实例。Downloader中有以下几个常用的方法:

◆ Open方法用来实例化Downloader对象,并用来指定要下载的内容。这个方法包含两个类型为字符串 的参数:第一个参数指定了下载的行为,目前只支持"GET";第二个参数是一个URI,指明了下载的文件。

◆ Send方法用来执行下载的请求。该方法不包含任何参数,并用异步方法下载文件。

由于Downloader对象用异步方法下载文件,因此对下载后的文件操作一般都是通过事件触发的方法来 执行的。可以使用addEventListener方法为Downloader的对象实例添加事件监听。addEventListener方法 包含两个参数:第一个参数指明了所要侦听的Downloader事件;第二个参数指明了事件处理的方法名。 Downloader对象一共有三个事件:

◆ Completed事件在下载请求完成,并返回下载内容的时候触发。

◆ DownloadFailed事件在下载失败时返回。

◆ DownloadProgressChanged事件在下载过程中触发。

一个使用Downloader对象的例子如下:

function onDemandLoaded(sender, eventArgs)
...{
  //首先得到当前Silverlight 插件的引用
  var SilverlightPlugin = sender.getHost();
  //创建一个Downloader对象
  var downloader = SilverlightPlugin.createObject("downloader");
  //初始化 Downloader对象
  downloader.open("GET", "myPage.xaml");
  //执行下载请求
   downloader.send();
  //添加事件侦听
  downloader.addEventListener ("downloadProgressChanged", onDownloadProgressChanged);
  downloader.addEventListener ("completed", onCompleted);
}
function onDownloadProgressChanged(sender, eventArgs)
...{
  //sender返回的即是已下载的文件对象
}
function onCompleted(sender, eventArgs)
...{
}

时间: 2024-09-11 02:27:00

详解Silverlight中的Downloader对象的相关文章

详解Javascript中的Object对象_javascript技巧

Object是在javascript中一个被我们经常使用的类型,而且JS中的所有对象都是继承自Object对象的.虽说我们平时只是简单地使用了Object对象来存储数据,并没有使用到太多其他功能,但是Object对象其实包含了很多很有用的属性和方法,尤其是ES5增加的方法,因此,本文将从最基本的介绍开始,详细说明了Object的常用方法和应用. 基础介绍 创建对象 首先我们都知道,对象就是一组相似数据和功能的集合,我们就是用它来模拟我们现实世界中的对象的.那在Javascript中,创建对象的方

详解jQuery中的deferred对象的使用(一)_jquery

 deferred对象是jQuery对Promises接口的实现.它是非同步操作的通用接口,可以被看作是一个等待完成的任务,开发者通过一些通过的接口对其进行设置.事实上,它扮演代理人(proxy)的角色,将那些非同步操作包装成具有某些统一特性的对象,典型例子就是Ajax操作.网页动画.web worker等等. jQuery的所有Ajax操作函数,默认返回的就是一个deferred对象. 在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生

详解Angular2中的编程对象Observable_AngularJS

前言 RxJs提供的核心是Observable对象,它是一个使用可观察数据序列实现组合异步和事件编程. 跟这个很类似的异步编程模型是Promise,Promise是基于状态变化的异步模型,一旦由等待状态进入成功或失败状态便不能再次修改,当状态变化时订阅者只能够拿到一个值:而Observable是基于序列的异步编程模型,随着序列的变化,订阅者可以持续不断的获取新的值.而且Promise只提供回话机制,并没有更多的操作来支持对结果的复杂处理,而Observable提供了多种多样的操作符,来处理运算结

详解JSP中的语句对象Statement操作MySQL的使用实例_JSP编程

语句对象Statement包含两个主要方法:executeUpdate()方法执行数据的更新操作(添加记录,删除记录,更新记录),executeQuery()方法用来执行数据的查询操作(查询记录) 添加记录 <%@page language="java" contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*" %> <!DOCTYPE

详解Android中Intent传递对象给Activity的方法_Android

Activity回顾 activity是android程序中最重要的组件之一,它是用户与android用户交互的主要组件,类似于桌面程序的图形界面.android程序大致可以分为看的见的组件和看不见的service.看得见的组件主要就是在Activity中定义,看不见的service,包括service,BroadCastReceiver,ContentProvider等等,这是后话.今天先来大致了解一下activity. 可以理解activity为盛放组件的容器,和用户交互的组件都要放在Act

详解Java中用于查找对象哈希码值的hashCode()函数_java

理解hashCode() 的作用是获取哈希码,也称为散列码:它实际上是返回一个int整数.这个哈希码的作用是确定该对象在哈希表中的索引位置. hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数. 虽然,每个Java类都包含hashCode() 函数.但是,仅仅当创建并某个"类的散列表"(关于"散列表"见下面说明)时,该类的hashCode() 才有用(作用是:确定该类的每一个对象在散列表中的位

详解Android中Intent传递对象给Activity的方法

Activity回顾 activity是android程序中最重要的组件之一,它是用户与android用户交互的主要组件,类似于桌面程序的图形界面.android程序大致可以分为看的见的组件和看不见的service.看得见的组件主要就是在Activity中定义,看不见的service,包括service,BroadCastReceiver,ContentProvider等等,这是后话.今天先来大致了解一下activity. 可以理解activity为盛放组件的容器,和用户交互的组件都要放在Act

详解Android中Intent对象与Intent Filter过滤匹配过程_Android

如果对Intent不是特别了解,可以参见博文<详解Android中Intent的使用方法>,该文对本文要使用的action.category以及data都进行了详细介绍.如果想了解在开发中常见Intent的使用,可以参见<Android中Intent习惯用法>. 本文内容有点长,希望大家可以耐心读完. 本文在描述组件在manifest中注册的Intent Filter过滤器时,统一用intent-filter表示. 一.概述 我们知道,Intent是分两种的:显式Intent和隐式

详解Python中的序列化与反序列化的使用

  这篇文章主要介绍了详解Python中的序列化与反序列化的使用,针对pickle和cPickle对象进行了探究,需要的朋友可以参考下 学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时marshal不支持自引用(递归引用)的对象的序列化.所以直接使用marshal来序列化/反序列化可能不是很方便.还好,python标准库提供了功能更加强大且更加安全的pickle和cPickle模块. cP