cannot evaluate expression because a native frame is on top of the call stack and system.accessviolationexception
- by Joseph
I have this code using c#.
public partial class MainForm : Form
{
    private CvCapture VideoCapture;
    private IplImage frame;
    private IplImage imgMain;
    public MainForm()
    {
        InitializeComponent();
    }
    private void btnVideo_Click(object sender, EventArgs e)
    {
        double vidWidth, vidHeight;
        try
        {
            VideoCapture = highgui.CvCreateCameraCapture(0);
        }
        catch (Exception except)
        {
            MessageBox.Show(except.Message);
        }
        if (btnVideo.Text.CompareTo("Start Video") == 0)
        {
            if (VideoCapture.ptr == IntPtr.Zero)
            {
                MessageBox.Show("badtrip ah!!!");
                return;
            }
            btnVideo.Text = "Stop Video";
            highgui.CvSetCaptureProperty(ref VideoCapture, highgui.CV_CAP_PROP_FRAME_WIDTH, 640);
            highgui.CvSetCaptureProperty(ref VideoCapture, highgui.CV_CAP_PROP_FRAME_HEIGHT, 480);
            highgui.CvQueryFrame(ref VideoCapture);
            vidWidth = highgui.cvGetCaptureProperty(VideoCapture, highgui.CV_CAP_PROP_FRAME_WIDTH);
            vidHeight = highgui.cvGetCaptureProperty(VideoCapture, highgui.CV_CAP_PROP_FRAME_HEIGHT);
            picBoxMain.Width = (int)vidWidth;
            picBoxMain.Height = (int)vidHeight;
            timerGrab.Enabled = true;
            timerGrab.Interval = 42;
            timerGrab.Start();
        }
        else
        {
            btnVideo.Text = "Start Video";
            timerGrab.Enabled = false;
            if (VideoCapture.ptr == IntPtr.Zero)
            {
                highgui.CvReleaseCapture(ref VideoCapture);
                VideoCapture.ptr = IntPtr.Zero;
            }
        }
    }
    private void timerGrab_Tick(object sender, EventArgs e)
    {
        try
        {
            frame = highgui.CvQueryFrame(ref VideoCapture);
            if (frame.ptr == IntPtr.Zero)
            {
                timerGrab.Stop();
                MessageBox.Show("??");
                return;
            }
            imgMain = cxcore.CvCreateImage(cxcore.CvGetSize(ref frame), 8, 3);
            picBoxMain.Image = highgui.ToBitmap(imgMain, false);
            cxcore.CvReleaseImage(ref imgMain);
            //cxcore.CvReleaseImage(ref frame);
        }
        catch (Exception excpt)
        {
            MessageBox.Show(excpt.Message);
        }
    }
}
The problem is after i break all and step through the debugger the program stops at a certain code. 
the code where it stops is here: frame = highgui.CvQueryFrame(ref VideoCapture);
the error is that it says that cannot evaluate expression because a native frame is on top of the call stack.
and then when i try to shift+F11 it. there is another error saying that system.accessviolationexception.
the stack trace says that:    at System.Runtime.InteropServices.Marshal.CopyToManaged(IntPtr source, Object destination, Int32 startIndex, Int32 length)
   at CxCore.IplImage.get_ImageDataDb()