您的位置:首页 > 理论基础 > 计算机网络

Silverlight+WCF 实战-网络象棋最终篇之对战视频-上篇[客户端开启视频/注册编号/接收视频](五)

2010-12-01 17:36 441 查看
前言:

SynchronizationContext syn=SynchronizationContext.Current;//获取当前主线程
void receiveEvent_Completed(object sender, SocketAsyncEventArgs e)
{
byte[] data=e.Buffer;
if (data[0]>0)
{
syn.Post(SetVideo, data);//由于新线程无法对控件进行操作,需要主线程来调用
}
}
void SetVideo(object data)//设置视频
{
MemoryStream stream=null;
WriteableBitmap img=null;
try
{
stream = new MemoryStream(data as byte[]);
img = new WriteableBitmap(160, 160);

img.SetSource(stream);
imgVideo.Source = img;//直接赋下值,就设置好了。
}
catch
{
return;
}
finally
{
if (stream != null)
{
stream.Close();
}
if (img != null)
{
img = null;
}
}
}
上面的imgVideo为:

<Image Height="160" HorizontalAlignment="Left" Margin="207,109,0,0" Name="imgVideo" Stretch="Fill" VerticalAlignment="Top" Width="160" />

至此,我们连续完成了“打开视频—》注册—》等待接收-》接收时开主线程显示”,我们提前看一下完成后接收时的效果图:



红色块是显示视频的区域,当前图片说明左侧没有开启视频,只是开了接收,右侧开了视频,并发送视频。

下面再顺路看一下开启的服务端中转Socket的运行:



OK,本节就先到此,下节我们再讲“视频图片的压缩与发送”+服务端处理中转流程

最后:谢谢大家对本系列的喜欢,谢谢支持~

PS:传说点一下推荐会有10个园豆,喜欢麻烦点一下“推荐”,thank you very much!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐