问题描述
在一个窗口中有动态显示当前得到时间label还有动态显示当前摄像头的图像,还有一些功能按钮,当我点击功能按钮的时候动态显示的时间还有图像会有卡顿请问有可能避免吗,请教啊!急!!!
解决方案
解决方案二:
如果你把工作都在前台线程做,无论如何都会卡,只是有时候卡的时间太短,让你觉得不卡而已。对于这种让界面卡的工作,你应该用一个后台线程(BackgroundWorker)去处理。
解决方案三:
publicstaticclassControlCrossThreadCalls{publicdelegatevoidShowInvokeHandler();publicstaticvoidShowInvoke(Controlcontrol,ShowInvokeHandlerhandler){try{if(control.InvokeRequired){control.Invoke(handler);}else{handler();}}catch(Exceptione){MessageBox.Show(e.Message);}}}
///<summary>///线程中安全访问控件,避免重复的delegate,Invoke///</summary>publicstaticclassCrossThreadCalls{publicdelegatevoidShowTaskDelegate();publicdelegatevoidShowInvokeMethodDelegate(Controlcontrol,ShowTaskDelegatehandler);publicstaticvoidSafeInvoke(Controlcontrol,ShowTaskDelegatehandler){if(control.InvokeRequired){while(!control.IsHandleCreated){if(control.Disposing||control.IsDisposed){return;}}IAsyncResultresult=control.BeginInvoke(newShowInvokeMethodDelegate(SafeInvoke),newobject[]{control,handler});control.EndInvoke(result);//获取委托执行结果的返回值return;}IAsyncResultresult2=control.BeginInvoke(handler);control.EndInvoke(result2);}}
调用ControlCrossThreadCalls.ShowInvoke(this.dataGridView1(这里换成你的控件),newControlCrossThreadCalls.ShowInvokeHandler(delegate(){//你的赋值等操作}));