• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net BackgroundWorker之在后台下载文件
    示例:
    下面的代码示例演示如何使用 BackgroundWorker 组件从 URL 加载 XML 文件。用户单击“下载”按钮时,Click 事件处理程序将调用 BackgroundWorker 组件的 RunWorkerAsync 方法来启动下载操作。在下载过程中,将禁用该按钮,然后在下载完成后再启用该按钮。MessageBox 将显示文件的内容。
    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Threading;
    using System.Windows.Forms;
    using System.Xml;
    public class Form1 : Form
    {
    private BackgroundWorker backgroundWorker1;
    private Button dowloadButton;
    private XmlDocument document = null;
    public Form1()
    {
    InitializeComponent();
    }
    private void dowloadButton_Click(object sender, EventArgs e)
    {
    // Start the download operation in the background.
    this.backgroundWorker1.RunWorkerAsync();
    // Disable the button for the duration of the download.
    this.dowloadButton.Enabled = false;
    // Wait for the BackgroundWorker to finish the download.
    while (this.backgroundWorker1.IsBusy)
    {
    // Keep UI messages moving, so the form remains
    // responsive during the asynchronous operation.
    Application.DoEvents();
    }
    // The download is done, so enable the button.
    this.dowloadButton.Enabled = true;
    }
    private void backgroundWorker1_DoWork(
    object sender,
    DoWorkEventArgs e)
    {
    document = new XmlDocument();
    // Replace this file name with a valid file name.
    document.Load(@"http://www.tailspintoys.com/sample.xml");
    // Uncomment the following line to
    // simulate a noticeable latency.
    //Thread.Sleep(5000);
    }
    private void backgroundWorker1_RunWorkerCompleted(
    object sender,
    RunWorkerCompletedEventArgs e)
    {
    if (e.Error == null)
    {
    MessageBox.Show(document.InnerXml, "Download Complete");
    }
    else
    {
    MessageBox.Show(
    "Failed to download file",
    "Download failed",
    MessageBoxButtons.OK,
    MessageBoxIcon.Error );
    }
    }
    /// summary>
    /// Required designer variable.
    /// /summary>
    private System.ComponentModel.IContainer components = null;
    /// summary>
    /// Clean up any resources being used.
    /// /summary>
    /// param name="disposing">true if managed resources should be disposed; otherwise, false./param>
    protected override void Dispose(bool disposing)
    {
    if (disposing (components != null))
    {
    components.Dispose();
    }
    base.Dispose(disposing);
    }
    #region Windows Form Designer generated code
    /// summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// /summary>
    private void InitializeComponent()
    {
    this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
    this.dowloadButton = new System.Windows.Forms.Button();
    this.SuspendLayout();
    //
    // backgroundWorker1
    //
    this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
    this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
    //
    // dowloadButton
    //
    this.dowloadButton.Location = new System.Drawing.Point(12, 12);
    this.dowloadButton.Name = "dowloadButton";
    this.dowloadButton.Size = new System.Drawing.Size(75, 23);
    this.dowloadButton.TabIndex = 0;
    this.dowloadButton.Text = "Download file";
    this.dowloadButton.UseVisualStyleBackColor = true;
    this.dowloadButton.Click += new System.EventHandler(this.dowloadButton_Click);
    //
    // Form1
    //
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(104, 54);
    this.Controls.Add(this.dowloadButton);
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false);
    }
    #endregion
    }
    static class Program
    {
    /// summary>
    /// The main entry point for the application.
    /// /summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
    }
    }

    下载文件:
    文件下载在 BackgroundWorker 组件的辅助线程上进行,该线程运行 DoWork 事件处理程序。当代码调用 RunWorkerAsync 方法时,将启动此线程。
    复制代码 代码如下:

    private void backgroundWorker1_DoWork(
    object sender,
    DoWorkEventArgs e)
    {
    document = new XmlDocument();
    // Replace this file name with a valid file name.
    document.Load(@"http://www.tailspintoys.com/sample.xml");
    // Uncomment the following line to
    // simulate a noticeable latency.
    //Thread.Sleep(5000);
    }

    等待 BackgroundWorker 完成
    dowloadButton_Click 事件处理程序演示如何等待 BackgroundWorker 组件完成它的异步任务。使用 IsBusy 属性可以确定 BackgroundWorker 线程是否仍在运行。如果代码在主 UI 线程上(对于 Click 事件处理程序即是如此),请务必调用 Application.DoEvents 方法以使用户界面能够响应用户操作。
    复制代码 代码如下:

    private void dowloadButton_Click(object sender, EventArgs e)
    {
    // Start the download operation in the background.
    this.backgroundWorker1.RunWorkerAsync();
    // Disable the button for the duration of the download.
    this.dowloadButton.Enabled = false;
    // Wait for the BackgroundWorker to finish the download.
    while (this.backgroundWorker1.IsBusy)
    {
    // Keep UI messages moving, so the form remains
    // responsive during the asynchronous operation.
    Application.DoEvents();
    }
    // The download is done, so enable the button.
    this.dowloadButton.Enabled = true;
    }

    显示结果
    backgroundWorker1_RunWorkerCompleted 方法将处理 RunWorkerCompleted 事件,并在后台操作完成后被调用。它首先检查 AsyncCompletedEventArgs.Error 属性,如果该属性是 null,它将显示文件内容。
    复制代码 代码如下:

    private void backgroundWorker1_RunWorkerCompleted(
    object sender,
    RunWorkerCompletedEventArgs e)
    {
    if (e.Error == null)
    {
    MessageBox.Show(document.InnerXml, "Download Complete");
    }
    else
    {
    MessageBox.Show(
    "Failed to download file",
    "Download failed",
    MessageBoxButtons.OK,
    MessageBoxIcon.Error );
    }
    }
    您可能感兴趣的文章:
    • ASP.NET Web Api 2实现多文件打包并下载文件的实例
    • ASP.NET(C#) Web Api通过文件流下载文件的实例
    • ASP.NET批量下载文件的方法
    • ASP.NET 在下载文件时对其重命名的思路及实现方法
    • asp.net C#实现下载文件的六种方法实例
    • ASP.NET中下载文件的几种实例代码
    • 在ASP.NET中下载文件的实现代码
    • asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
    • asp.net 下载文件时输出文件内容
    • asp.net Web Services上传和下载文件(完整代码)
    • ASP.NET实现从服务器下载文件问题处理
    上一篇:asp.net HttpHandler操作Session的函数代码
    下一篇:Request.QueryString与一般NameValueCollection的区别
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net BackgroundWorker之在后台下载文件 asp.net,BackgroundWorker,之在,