每次拍完图片后都要清空RAM?

问题描述 投票:0回答:1

我对c#很陌生,我的程序有问题。

我想写一个程序,每隔3秒截图一次,并将其显示在一个图片框中。但在我的程序运行5分钟后,它使用了超过900mb的内存。有没有一种方法可以在每张图片显示后 "扫除 "内存?因为我打算一次运行这个程序长达40分钟。

在我的WindowsFormApp中,我有一个按钮,一个用来启动screngrab定时器,另一个用来停止它,我使用了FormDesigner工具箱中的Timer组件来制作倒计时3秒的定时器。

 private void timer1_Tick(object sender, EventArgs e)
    {
        //do the screen grab and dispaly picture in picture box.
        Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
        Graphics g = Graphics.FromImage(bitmap);
        g.CopyFromScreen(0, 0, -1150,50, bitmap.Size);
        pictureBox1.Image = bitmap; }

当我试图使用Dispose()命令时,我的程序就崩溃了。当它崩溃的时候,图片框里有一个大的红色的X(请记住,我是一个非常新的c#)。

c# windows-forms-designer
1个回答
0
投票
private void timer1_Tick(object sender, EventArgs e)
{
    //do the screen grab and dispaly picture in picture box.
    Bitmap bitmap = new 
    Bitmap(Screen.PrimaryScreen.Bounds.Width, 
    Screen.PrimaryScreen.Bounds.Height);
    Graphics g = Graphics.FromImage(bitmap);
    g.CopyFromScreen(0, 0, -1150,50, bitmap.Size);
    pictureBox1.Image = bitmap;
    bitmap.Dispose();
    g. Dispose();
 }
© www.soinside.com 2019 - 2024. All rights reserved.