我在我的Form构造函数中,在InitializeComponent之后有以下代码:
- using (WebClient client = new WebClient())
- {
- client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
- client.DownloadDataAsync("http://example.com/version.txt");
- }
当我启动表单时,UI不会出现,直到引发client_DownloadDataCompleted.
client_DownloadDataCompleted方法为空,因此没有问题.
我做错了什么?
如何在不冻结UI的情况下做到这一点?
谢谢你的时间.
最好的祝福.
完整代码:
Program.cs中
- using System;
- using System.Windows.Forms;
- namespace Lala
- {
- static class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
- }
- }
- }
Form1.cs的
- using System;
- using System.Net;
- using System.Windows.Forms;
- namespace Lala
- {
- public partial class Form1 : Form
- {
- WebClient client = new WebClient();
- public Form1()
- {
- client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
- client.DownloadDataAsync(new Uri("http://www.google.com"));
- InitializeComponent();
- }
- void client_DownloadDataCompleted(object sender,DownloadDataCompletedEventArgs e)
- {
- textBox1.Text += "A";
- }
- }
- partial class Form1
- {
- /// <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.button1 = new System.Windows.Forms.Button();
- this.textBox1 = new System.Windows.Forms.TextBox();
- this.SuspendLayout();
- //
- // button1
- //
- this.button1.Location = new System.Drawing.Point(12,12);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75,23);
- this.button1.TabIndex = 0;
- this.button1.Text = "button1";
- this.button1.UseVisualStyleBackColor = true;
- //
- // textBox1
- //
- this.textBox1.Location = new System.Drawing.Point(12,41);
- this.textBox1.Multiline = true;
- this.textBox1.Name = "textBox1";
- this.textBox1.Size = new System.Drawing.Size(468,213);
- this.textBox1.TabIndex = 1;
- //
- // Form1
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F,13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(492,266);
- this.Controls.Add(this.textBox1);
- this.Controls.Add(this.button1);
- this.Name = "Form1";
- this.Text = "Form1";
- this.ResumeLayout(false);
- this.PerformLayout();
- }
- #endregion
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.TextBox textBox1;
- }
- }