源码:
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),并在运行时间很长的操作过程中定期发送消息
6 个解决方案
#1
cf.put()方法是异步的吗?
如果是同步的就会阻塞UI线程造成假死
如果是同步的就会阻塞UI线程造成假死
#2
最简单的方法就是学一下 backgroundworker 控件。是傻瓜级的简单控件,可以解决这类问题。。
#3
更正一下!是“组件”,但不是控件。
#4
sp大神的签名 越来越亮了
#5
你需要了解多线程编程的几种方法。
#6
谢谢!我明白了~~
#1
cf.put()方法是异步的吗?
如果是同步的就会阻塞UI线程造成假死
如果是同步的就会阻塞UI线程造成假死
#2
最简单的方法就是学一下 backgroundworker 控件。是傻瓜级的简单控件,可以解决这类问题。。
#3
更正一下!是“组件”,但不是控件。
#4
sp大神的签名 越来越亮了
#5
你需要了解多线程编程的几种方法。
#6
谢谢!我明白了~~