Microsoft Official Guide – BackgroundWorker - 如何:在后台下载文件
2011-04-22 11:53
357 查看
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 downloadButton; private ProgressBar progressBar1; private XmlDocument document = null; public Form1() { InitializeComponent(); // Instantiate BackgroundWorker and attach handlers to its // DowWork and RunWorkerCompleted events. backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); } private void downloadButton_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.downloadButton.Enabled = false; // Once you have started the background thread you // can exit the handler and the application will // wait until the RunWorkerCompleted event is raised. // Or if you want to do something else in the main thread, // such as update a progress bar, you can do so in a loop // while checking IsBusy to see if the background task is // still running. while (this.backgroundWorker1.IsBusy) { progressBar1.Increment(1); // Keep UI messages moving, so the form remains // responsive during the asynchronous operation. Application.DoEvents(); } } private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e) { document = new XmlDocument(); // Uncomment the following line to // simulate a noticeable latency. //Thread.Sleep(5000); // Replace this file name with a valid file name. document.Load(@"http://www.tailspintoys.com/sample.xml"); } private void backgroundWorker1_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e) { // Set progress bar to 100% in case it's not already there. progressBar1.Value = 100; if (e.Error == null) { MessageBox.Show(document.InnerXml, "Download Complete"); } else { MessageBox.Show( "Failed to download file", "Download failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Enable the download button and reset the progress bar. this.downloadButton.Enabled = true; progressBar1.Value = 0; } #region Windows Form Designer generated code /// <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); } /// <summary> /// Required method for Designer support /// </summary> private void InitializeComponent() { this.downloadButton = new System.Windows.Forms.Button(); this.progressBar1 = new System.Windows.Forms.ProgressBar(); this.SuspendLayout(); // // downloadButton // this.downloadButton.Location = new System.Drawing.Point(12, 12); this.downloadButton.Name = "downloadButton"; this.downloadButton.Size = new System.Drawing.Size(100, 23); this.downloadButton.TabIndex = 0; this.downloadButton.Text = "Download file"; this.downloadButton.UseVisualStyleBackColor = true; this.downloadButton.Click += new System.EventHandler(this.downloadButton_Click); // // progressBar1 // this.progressBar1.Location = new System.Drawing.Point(12, 50); this.progressBar1.Name = "progressBar1"; this.progressBar1.Size = new System.Drawing.Size(100, 26); this.progressBar1.TabIndex = 1; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(133, 104); this.Controls.Add(this.progressBar1); this.Controls.Add(this.downloadButton); 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()); } }
相关文章推荐
- Microsoft Official Guide – BackgroundWorker - 如何:实现使用后台操作的窗体
- 如何:在后台下载文件
- Microsoft Official Guide – BackgroudWorker - 如何:在后台运行操作
- springMVC后台如何接受前端上传的文件,与及下载文件
- 在网页上连接Microsoft PowerPoint文件,如何只能供浏览,而不能被下载。
- 如何下载网站后台的一些css,js等文件
- springMVC后台如何接受前端上传的文件,与及下载文件
- 在网页上连接Microsoft PowerPoint文件,如何只能供浏览,而不能被下载[ZT]
- 论前后台如何实现web中文件下载功能
- HttpURLConnection实现文件下载,Service加Notification实现后台下载
- 如何在后台运行模式生成Excel格式文件
- thinkphp-如何生成Admin后台文件入口
- 微物业 后台部署代码、微信html5代码、webapi接口代码、数据库文件下载地址
- BAT批处理文件的msdos窗口如何后台运行不弹出窗口
- 后台动态添加超链接实现点击文件实现下载
- 如何解决“文件上传返回JSON数据,在IE下提示下载文件”的问题?
- 前端数据传到后台动态生成Excel文件并提供文件下载
- Django 如何实现文件下载
- 网页下载文件期间如何防止用户对网页进行其他操作
- 如何破解百度云限速和下载大文件需要客户端的限制