我在表单上有两个图片框,每个图片框都是由其他线程委派的事件更新的。
当我只更新其中一个图片盒时,它正在重新绘制高频率(54-60Hz)。当我按照预期更新两个图片框时,刷新率会变慢,但不同图片的OnPaint方法会以非常不同的速率调用(6Hz对45-47Hz)。
这是事件的提升方式。
class WorkingThread {
protected event EventHandler<OutputImageUpdateArgs> NewImageAvailable;
protected void OnNewImageAvailable(OutputImageUpdateArgs e )
{
NewImageAvailable.Invoke(this, e );
}
...
SomeFunction(){
...
OnNewImageAvailable( tmp );
}
}
这是在UI类/线程
中class UI{
SomeInitialisationFunction(){
...
pass in the new event handle to the worker threads..
.. new EventHandler<OutputImageUpdateArgs>( OnNewImageAvailable )
new EventHandler<OutputImageUpdateArgs>( OnSecondImageAvailable)...
}
void OnNewImageAvailable(object sender, OutputImageUpdateArgs e ) {
BeginInvoke((Action)(()=> {pictureBox1.Image = e.NewImage;}
));
}
void OnSecondImageAvailable ( object sender, OutputImageUpdateArgs e ) {
BeginInvoke( (Action)(() => {pictureBox2.Image = e.NewImage;}
) );
}
}
我想知道两件事: