Winform下摄像头录制视频,想录制1分钟就停止录制,用线程实现,但是这样写界面直接卡死,过了一分钟后界面恢复正常,请各位高手解决一下
threadvideo = new Thread(new System.Threading.ThreadStart(CaptureVideo));//执行录像线程
threadvideo.IsBackground = true;//后台线程
threadvideo.Start();
private void CaptureVideo()
{
if (this.InvokeRequired)
{
BeginInvoke(new EventHandler(ThreadVideoOut), null);
Application.DoEvents();
}
else
{
ThreadVideoOut(this, null);
}
} private void ThreadVideoOut(object sender, EventArgs e)
{
//开始录制视频
cvideo.StartKinescope(videopath);
//暂停1分钟 Thread.Sleep(60000);
//停止录制视频
cvideo.StopKinescope();
//视频处理
FileInfo fi = new FileInfo(videopath);
string filename = Path.GetFileName(videopath);
string filetype = Path.GetExtension(videopath);
double size = Math.Round(fi.Length / (1024 * 1024d), 0);
string filesize = size.ToString() + "MB";
string[] name = filename.Split(new char[] { '_' });
//上传FTP,如果视频容量一直变化,上传不成功
uploadvideopath = @"ftp://" + IpAddress + videofolderloaction + filename;
ftpfile.Upload(videofolderloaction, videopath);
}
threadvideo = new Thread(new System.Threading.ThreadStart(CaptureVideo));//执行录像线程
threadvideo.IsBackground = true;//后台线程
threadvideo.Start();
private void CaptureVideo()
{
if (this.InvokeRequired)
{
BeginInvoke(new EventHandler(ThreadVideoOut), null);
Application.DoEvents();
}
else
{
ThreadVideoOut(this, null);
}
} private void ThreadVideoOut(object sender, EventArgs e)
{
//开始录制视频
cvideo.StartKinescope(videopath);
//暂停1分钟 Thread.Sleep(60000);
//停止录制视频
cvideo.StopKinescope();
//视频处理
FileInfo fi = new FileInfo(videopath);
string filename = Path.GetFileName(videopath);
string filetype = Path.GetExtension(videopath);
double size = Math.Round(fi.Length / (1024 * 1024d), 0);
string filesize = size.ToString() + "MB";
string[] name = filename.Split(new char[] { '_' });
//上传FTP,如果视频容量一直变化,上传不成功
uploadvideopath = @"ftp://" + IpAddress + videofolderloaction + filename;
ftpfile.Upload(videofolderloaction, videopath);
}
解决方案 »
- 线程问题
- c#中所有异常都不强制try/catch吗?
- 用arraylist出现的一个问题.
- VS2005中我把控件定义成静态的,每次修改一些数据口,它都会自动变回非静态的,如何解决?
- object赋值
- ReadXml后如何更改列类型
- vs2008 开发环境 编写代码时没有自动检查错误提示??
- WPF,请问这样的绑定该怎么写?
- 关于C# 的double类型数据 16235.34+869813.58不等于886048.92
- 急急急!求助贴,怎么用C#实现一个图案剪切,大小控制,旋转,并合一张成新的图案的功能
- System.Net.WebException: 远程服务器返回错误: (400) 错误的请求
- C#中RDCL报表问题,在线等
{
DlVideo dv = new DlVideo(Video);
dv.BeginInvoke(null, null);
}
private void Video()
{
//开始录制视频
cvideo.StartKinescope(videopath);
//暂停1分钟 Thread.Sleep(60000);
//停止录制视频
cvideo.StopKinescope();
//视频处理
FileInfo fi = new FileInfo(videopath);
string filename = Path.GetFileName(videopath);
string filetype = Path.GetExtension(videopath);
double size = Math.Round(fi.Length / (1024 * 1024d), 0);
string filesize = size.ToString() + "MB";
string[] name = filename.Split(new char[] { '_' });
//上传FTP,如果视频容量一直变化,上传不成功
uploadvideopath = @"ftp://" + IpAddress + videofolderloaction + filename;
ftpfile.Upload(videofolderloaction, videopath);
}
private delegate void DlVideo();
BeginInvoke(new DlVideo(ThreadVideoOut), null);
有什么区别?