我对使用线程更新 UI 的 winform 应用程序有疑问。我的应用程序确实从云上传和下载文件。同时我也在同一个窗口上显示网络速度详细信息。这三个操作(上传、下载、显示 n/w 速度)由 3 个不同的线程调用。问题是,当我开始下载/上传时,整个窗口冻结并且 n/w 速度显示不刷新(它被写入每隔 1 秒刷新一次)。会有什么问题?提前致谢。
代码如下......我写的下载方式相同。如果我先调用 **Upload** 然后 **Download** 一个接一个,第一个线程将暂停并开始下载线程。**下载**完成后,**上传**继续。它不会并行。UI 也不会立即响应其他按钮单击或窗口大小调整、移动操作。
public delegate void UploadDelgt();
UploadDelgt UpldDlgtObj;
private void Form1_Load(object sender, EventArgs e)
{
UpldDlgtObj = new UploadDelgt(DoUpload);
}
public void load()
{
Form1 form = this;
form.Invoke(UpldDlgtObj);
}
private void button1_Click(object sender, EventArgs e)
{
thrd = new Thread(new ThreadStart(load));
thrd.Start();
thrd.IsBackground = true;
}
public void DoUpload()
{
//uploads file block by block and updates the progressbar accordingly..
}