C# 按钮事件问题 && FTP上传大文件长时间未响应
点击按钮上传文件,界面上有一个进度条图片,我想让按钮激发事件时先显示这个进度条图片,再开始上传。目前的问题是:单击按钮后,进度条图片没有显示,一直到文件上传完成后才显示。求大神指点。
源码:
private void bt_start_upload_Click(object sender, EventArgs e)
{
pic_pro.Visible = true;//显示图片控件
try
{
cf.Put(filename);//上传
lb_upload_state.Text = "上传状态:已经成功上传视频:" + fname + "!" ;
}
catch(Exception ex)
{
MessageBox.Show("错误");
return;
}
问题补充:
调试信息:
托管调试助手“ContextSwitchDeadlock”在项目中检测到故障。
其他信息: CLR 无法从 COM 上下文 0x4defe8 转换为 COM 上下文 0x4df158,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息
------解决方案--------------------cf.put()方法是异步的吗?
如果是同步的就会阻塞UI线程造成假死
------解决方案--------------------
最简单的方法就是学一下 backgroundworker 控件。是傻瓜级的简单控件,可以解决这类问题。。
------解决方案--------------------更正一下!是“组件”,但不是控件。
------解决方案--------------------你需要了解多线程编程的几种方法。