C# 开发摄像头应用程序,录像时出现鼠标是忙碌状态问题如何解决
能拍照,也能录像,就是录像时鼠标是忙碌状态,不能做其它事,一点击鼠标就会停止录像,请各位大神指点一下。
------解决方案--------------------录像语句后面跟上这句试试
Application.DoEvents();
或者
如果录像没有主界面UI操作和交互的话。直接新开个线程,别让它阻塞UI。
Thread processorThread = new Thread(new ThreadStart(录像函数));
processorThread.IsBackground = true;
processorThread.SetApartmentState(ApartmentState.STA);
processorThread.Start();
------解决方案--------------------MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.doevents(v=vs.90).aspx
我以前在程序里加载网页过程中,鼠标操作经常出现程序无响应,加上DoEvents就好一些。
如果video不是窗体控件的话,还是新开一个线程进行录制吧。
------解决方案--------------------多线程.............
------解决方案--------------------
应该不会..你是否在线程中访问UI线程了?
------解决方案--------------------/// <summary>
///录像按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void recordC_Click(object sender, EventArgs e)
{
video.path=@"d:\1.avi";
delegateKinescope myK = new delegateKinescope(video.StartKinescope);
Thread threadKinescope = new Thread(new ThreadStart(myK));
threadKinescope.Start();
}
///<summary>
///开始录像
///</summary>
///<param name="path">要保存的录像路径</param>
public string path;
public void StartKinescope()
{
// byte[] lpszName = new byte[100];
// byte[] lpszVer = new byte[100];
// VideoAPI.capGetDriverDescriptionA(0, lpszName, 100, lpszVer, 100);
//string path;
//path = "D:\\lx.avi";
IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
VideoAPI.SendMessage(lwndC, VideoAPI.WM_CAP_FILE_SET_CAPTURE_FILEA, 0, hBmp.ToInt32());
Video