none
обходит события RRS feed

  • Вопрос

  • Всем привет. Работаю с EmguCV, там программа проскакивает события. И сразу идет на следуюшую строку, и получается ощибка

    Вот первая часть, откуда вызывается события:

    private void btnStart_Click(object sender, EventArgs e)
            {
                #region if capture is not created, create it now
                if (capture == null)
                {
                    try
                    {
                        capture = new Capture();
                    }
                    catch (NullReferenceException excpt)
                    {
                        MessageBox.Show(excpt.Message);
                    }
                }
                #endregion
    
                if (capture != null)
                {
                    if (btnStart.Text == "Pause")
                    {  //if camera is getting frames then pause the capture and set button Text to
                        // "Resume" for resuming capture
                        btnStart.Text = "Resume"; //
                        Application.Idle -= ProcessFrame;
                        
                        DetectFace();
                    }
                    else
                    {
                        //if camera is NOT getting frames then start the capture and set button
                        // Text to "Pause" for pausing capture
                        btnStart.Text = "Pause";
    
                        Application.Idle += ProcessFrame;
                    
                        DetectFace();
                    }
                }
            }

    тут должен вызватся ProcessFrame, но после него сразу переходит на другую строку. Делал во всем коде точки останова, но именно сюда не попадает

    void ProcessFrame(object sender, EventArgs arg)
            {
                ImageFrame = capture.QueryFrame();  
    
                CamImageBox.Image = ImageFrame;
            }

    21 ноября 2012 г. 14:09

Ответы

  • Тогда нужно заменить строку

    Application.Idle += ProcessFrame;

    на строку

    ProcessFrame(null, EventArgs.Empty);

    Да и вообще, метод ProcessFrame можно сделать без параметров.

    • Помечено в качестве ответа Abolmasov Dmitry 30 ноября 2012 г. 8:01
    21 ноября 2012 г. 17:34

Все ответы

  • Судя по этому коду, метод ProcessFrame будет вызываться только в том случае, когда приложение бездействует (Application.Idle). Возможно, у вас в приложении как раз в это время идёт какая-то работа, поэтому событие Idle не вызывается.
    21 ноября 2012 г. 17:25
  • Судя по этому коду, метод ProcessFrame будет вызываться только в том случае, когда приложение бездействует (Application.Idle). Возможно, у вас в приложении как раз в это время идёт какая-то работа, поэтому событие Idle не вызывается.

    в приложение в это время никакая работа не идет. Я его запускаю и все.

    А как можна принудительно вызвать это события?

    21 ноября 2012 г. 17:30
  • Тогда нужно заменить строку

    Application.Idle += ProcessFrame;

    на строку

    ProcessFrame(null, EventArgs.Empty);

    Да и вообще, метод ProcessFrame можно сделать без параметров.

    • Помечено в качестве ответа Abolmasov Dmitry 30 ноября 2012 г. 8:01
    21 ноября 2012 г. 17:34
  • Тогда нужно заменить строку

    Application.Idle += ProcessFrame;

    на строку

    ProcessFrame(null, EventArgs.Empty);

    Да и вообще, метод ProcessFrame можно сделать без параметров.

    а как заменить Application.Idle -= ProcessFrame ?
    21 ноября 2012 г. 17:36
  • Просто убрать эту строку.
    21 ноября 2012 г. 17:55