在实现多线程处理视频的每一帧图像(bitmap类)时,出现无效的参数异常。后来发现这是由于bitmap资源还在被之前的处理程序占用。我的解决办法是在给线程传参时把bitmap拷贝一份出来。当然刚开始使用Bitmap bitmap2=bitmap;还是会错。这里应该用clone()函数,就会避免错误。
private void videoSourcePlayer_NewFrame( object sender, ref Bitmap image ) { Bitmap image2 = (Bitmap)image.Clone(); Task t = new Task(() => { pictureProcess(image2); }); t.Start(); //t.Wait(); } } private void pictureProcess(Bitmap bitmap) { //过程 }
不知道会不会对大家产生帮助。