`

wp wp8:后台传输服务

    博客分类:
  • wp
wp 
阅读更多
1.TransferPreferences属性设置:

后台传输服务上传最大文件大小为5M

通过手机网络连接最大下载大小为20M,若超过此大小,属性将自动更改为AllowBattery

通过wifi没有外部电源最大下载大小为100M,若超过此大小,属性设置为None

2.每个应用程序队列中未完成的最大请求个数为25个,最大并发数为2个,对大排队传输数位500

3.网络连接数组3G网络低于50kbps,wifi/usb网络低于100kbps会暂停传输并重试





上代码:

MainPage.xaml.cs

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 wp8BackgroundTransfer.Resources;
using Microsoft.Phone.BackgroundTransfer;

namespace wp8BackgroundTransfer
{
    public partial class MainPage : PhoneApplicationPage
    {
        // 构造函数
        public MainPage()
        {
            InitializeComponent();

          
        }

        BackgroundTransferRequest transferRequest;

        private void download_click(object sender, System.Windows.RoutedEventArgs e)
        {

            if (BackgroundTransferService.Requests.Count() > 25)
            {
                return;
            }

            String transferFileName = "http://m.news.cn/version_wp8.txt";
            Uri transferUri;
            try
            {
                transferUri = new Uri(Uri.EscapeUriString(transferFileName), UriKind.RelativeOrAbsolute);
            }
            catch
            {
                return;
            }

            transferRequest = new BackgroundTransferRequest(transferUri);

            transferRequest.TransferPreferences = TransferPreferences.None;

            transferRequest.TransferProgressChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferProgressChanged);

            transferRequest.TransferStatusChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferStatusChanged);

            transferRequest.Method = "GET";

            string downloadFileName = transferFileName.Substring(transferFileName.LastIndexOf("/")+1);

            Uri downloadUri = new Uri("shared/transfers/"+ downloadFileName, UriKind.RelativeOrAbsolute);

            transferRequest.DownloadLocation = downloadUri;

            transferRequest.Tag = downloadFileName;

            try
            {
                BackgroundTransferService.Add(transferRequest);
            }
            catch
            {
                return;
            }

        }

        private void cancel_click(object sender, System.Windows.RoutedEventArgs e)
        {

            if(transferRequest != null)
                removeRequest(transferRequest.RequestId);

        }

        void transfer_TransferProgressChanged(object sender, BackgroundTransferEventArgs e)
        {
           
        }

        void transfer_TransferStatusChanged(object sender, BackgroundTransferEventArgs e)
        {
            BackgroundTransferRequest transfer = e.Request;

            switch (transfer.TransferStatus)
            {
                case TransferStatus.Completed:
                    {
                        if (transfer.StatusCode == 200 || transfer.StatusCode == 206)
                        {
                            removeRequest(transfer.RequestId);
                        }
                        else
                        {
                            removeRequest(transfer.RequestId);
                            if (transfer.TransferError != null)
                            {
                                System.Diagnostics.Debug.WriteLine("失败:"+transfer.TransferError);
                            }
                        }
                    }
                    break;
                case TransferStatus.WaitingForExternalPower:
                    {
                        System.Diagnostics.Debug.WriteLine("电力不足,不能启动");
                    }
                    break;
                case TransferStatus.WaitingForExternalPowerDueToBatterySaverMode:
                    {
                        System.Diagnostics.Debug.WriteLine("省电模式,不能启动");
                    }
                    break;
                case TransferStatus.WaitingForNonVoiceBlockingNetwork:
                    {
                        System.Diagnostics.Debug.WriteLine("等待网络");
                    }
                    break;
                case TransferStatus.WaitingForWiFi:
                    {
                        System.Diagnostics.Debug.WriteLine("等待wifi网络");
                    }
                    break;
            }
        }

        void removeRequest(string id)
        {
            BackgroundTransferRequest request = BackgroundTransferService.Find(id);
            if (request != null)
            {
                BackgroundTransferService.Remove(request);
            }
        }
       
    }
}

MainPage.xaml

<phone:PhoneApplicationPage
    x:Class="wp8BackgroundTransfer.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRoot 是包含所有页面内容的根网格-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <StackPanel Orientation="Vertical">


            <Button Content="download" Width="300" Height="100" Click="download_click"></Button>
            <Button Content="cancel" Width="300" Height="100" Click="cancel_click"></Button>
           
        </StackPanel>


    </Grid>

</phone:PhoneApplicationPage>

分享到:
评论

相关推荐

    WP7开源中国源码201291

    WP7开源中国源码 源码描述: 开源中国社区 Windows Phone 客户端项目简析 本项目采用 GPL 授权协议,内容展示有最新动弹,博客,问答,资讯等 欢迎大家在这个基础上进行改进,并与大家分享 页面说明: App/Config....

    Put.io.Wp:适用于 Windows Phone 8 的 Put.io 应用程序

    使用后台下载服务下载 MP4 播放和管理离线 MP4 下载 MP3 在后台播放下载的 MP3 管理离线 MP3 显示账户信息 所需功能: 创建文件夹 移动文件和文件夹 通过浏览器添加传输 重命名文件 限制在试用模式 (TBD) 下...

    通用数据传输-socket构架 GeneralDataTransmission.rar

    3、主要有点使用TCP方式,支持多种类型客户端连接,WP系统客户端,C/S客户端,安卓客户端,IOS客户端,B/S客户端,PLC,各种支持TCP微芯片设备。适用于,网络游戏,工业信息采集,智能家庭设备采集,工业设备采集...

    通用数据传输-socket构架 DRGeneralDataTransmission.rar

    3、主要有点使用TCP方式,支持多种类型客户端连接,WP系统客户端,C/S客户端,安卓客户端,IOS客户端,B/S客户端,PLC,各种支持TCP微芯片设备。适用于,网络游戏,工业信息采集,智能家庭设备采集,工业设备采集...

    漂亮的SEO网络公司整站 v1.0.zip

    漂亮的SEO网络公司整站使用wp制作,带部分数据,后台及模板很完整。本人收集自网络。亲测完整无错。本程序版权归"原作者"所有,请勿用于商业用途,只为广大爱好者学习使用。请保留本站链接www.59info.com(59分类...

    漂亮的SEO网络公司整站源码 v1.0

    漂亮的SEO网络公司整站源码 v1.0,网站使用wp制作,带部分数据,后台及模板很完整。本人收集自网络。亲测完整无错。本程序版权归"原作者"所有,请勿用于商业用途,只为广大爱好者学习使用。请保留本站链接...

    仿百度百家模板源码

    最新仿百度百家模板Wordpress主题源码,采用xhtml标准篡写,科技资讯自媒体网站WP主题,符合seo标准,布局简洁舒心,后台功能非常齐全,并且支持自定义全屏背景大图。 主题特色: 1.可以在后台自定义下拉式的导航...

    GZippy提速插件 for Wordpress.zip

    我的博客启用这个插件后... 减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

    腾讯开源的微信客户端跨平台组件Mars.zip

    目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。主要包括以下几个部分:COMM:基础库,包括socket、线程、消息队列、协程等基础工具;XLOG:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、...

    微信支付宝应用,小程序,扫码支付,退款,提现案例

    商户服务后台生成支付订单,签名后将数据传输到APP端。 步骤2:用户点击后发起支付操作,进入到微信界面,调起微信支付,出现确认支付界面。 步骤3:用户确认收款方和金额,点击立即支付后出现输入密码界面,可选择...

    asp.net知识库

    完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...

Global site tag (gtag.js) - Google Analytics