我在C#做的窗体的一个panel显示视频流,怎么处理能让这个panel在独立的线程中运行,保证视频卡窗体不卡! 10

我的视频显示模块是用VC++做的ActiveX控件,只要能解决问题就成,不管在C++中实现或者C#中实现,最好能给个代码例子,或者参考资料地址,谢谢各位!... 我的视频显示模块是用VC++做的ActiveX控件,只要能解决问题就成,不管在C++中实现或者C#中实现,最好能给个代码例子,或者参考资料地址,谢谢各位! 展开
 我来答
liao_ken
2011-11-25 · TA获得超过662个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:316万
展开全部
1楼其实差不多是这个意思了
思想大体就是:
开始播放时:方法
delegate void ShowInPanel(参数);处理视频数据回调主线程的委托
void ShowInPanel sp;委托实例
StartPlayer()
{
sp= ShowInfo;//委托与主线程的ShowInfo挂起关系
Thread thread=new Thread(new ThreadStrart(ProcessBytes)) ;//新开线程处理视频流
thread.Start()
}

ProcessBytes()
{
//这里处理视频流取得要传给主线程的参数,如果这里卡住,下面的方法还执行不到,肯定不会卡住主界面
this.Invoke(sp);//叫主线程去显示
}

ShowInfo(参数)
{
//主线程根据参数显示视频
}
追问
您好,谢谢你建议的思路,我之前也这样试过,但是我的视频处理和显示是在一个方法里,没办法在invoke前处理,
//cp.ActiveX.Init((ushort)cp.VedioPort);//初始化摄像头,包括语音
//cp.ActiveX.OpenCamera(cp.CIP, cp.CPort, cp.CName, cp.CUsername, cp.CPassword);//打开摄像头
Invoke(new readyCamera(CrossThreadCall_Local), new Object[] { cp });
调用上面两个方法时就已经卡了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友586e433
2011-11-25 · TA获得超过3491个赞
知道小有建树答主
回答量:1221
采纳率:0%
帮助的人:1424万
展开全部
C#有个backgroundworker可以尝试以下.backgroundworker对thread进行了简单的封装.
追问
好 我试试,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luzhan__326454
2011-11-25 · TA获得超过124个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:163万
展开全部
你是不是遇到了 不能在异步线程中调用控件 这个错误。
是的话用委托。使用invoke来做。
追问
不是的,我就是想实现视频卡的时候,但是主窗体不卡,谢谢!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式