我正在使用Accord.Net在工作线程中显示RTSP视频流,如您所见:
Main_Form:
VideoFileReader reader = new VideoFileReader();
Thread Proceso1;
Proceso1 = new Thread(new ThreadStart(updateui));
Proceso1.Start();
我的功能:
public void updateui()
{
reader.Open(RTSPAddress);
while (true)
{
Bitmap frame1 = reader.ReadVideoFrame();
pictureRTSP.BackgroundImage = frame1;
}
}
它可以工作几秒钟,但之后我的内存异常。所以我想知道如何处理线程中的所有对象?
答案 0 :(得分:3)
while
循环的每次迭代都在创建一个新的位图,但它们没有被明确销毁。每次读取帧并更新显示时,都需要丢弃前一帧:
public void UpdateUI() // C# naming conventions
{
reader.Open(RTSPAddress);
while (true)
{
Bitmap previousFrame = pictureRTSP.BackgroundImage;
Bitmap currentFrame = reader.ReadVideoFrame();
pictureRTSP.BackgroundImage = currentFrame;
if (previousFrame != null)
previousFrame.Dispose();
}
}
这应该有所帮助,但还有一些其他问题需要解决: