RoutedEventArgs и AllFramesEventArgs

Я пытаюсь вызвать функцию, параметры которой являются отправителем объекта и RoutedEventsArg e. Мне нужны эти параметры, так как я создал кнопку в главном окне, относящуюся к этой функции, и когда я нажимаю кнопку, она связывается с моей функцией.

 protected void StartRecord(object sender,RoutedEventsArg e)
{
  // some stuff that creates a button and then does stuff
}

В другой функции мне нужно вызвать вышеуказанную функцию, указанную выше, но у этой второй функции есть параметр AllFramesReadyArg e, а не RoutedEventsArg e. Так как я могу вызвать первую функцию

    void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
    {
            this.StartRecord(sender, e);
        // does not work since parameter calls for RoutedEventArgs
    }

1 ответ

Решение

Ваш StartRecord не является частью Kinect Toolbox. Вы, кажется, написали это и дали ему эти два аргумента. Он не нуждается в них, и при этом вам не обязательно нужна функция.

Вы также не хотите звонить StartRecord в AllFramesReady, AllFramesReady callback запускается каждый раз, когда все кадры готовы к обработке (отсюда и название функции), что происходит примерно 30 раз в секунду. Вы только должны сказать это, чтобы сделать запись один раз.

На ваш другой вопрос, StartRecord это обратный вызов для кнопки - он не должен вызываться в коде. Он вызывается, когда пользователь нажимает соответствующую кнопку.

Просто глядя на код Kinect Toolbox и обратные вызовы, ваш код должен выглядеть примерно так:

KinectRecorder _recorder;
File _outStream;
bool _isRecording = false;

private void KinectSetup()
{
    // set up the Kinect here

    _recorder = new KinectRecorder(KinectRecordOptions.Skeleton, _outStream);

    // some other stuff to setup
}

private void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
{
    SkeletonFrame skeleton;

    if (_isRecording && skeleton != null)
    {
        _recorder.Record(skeleton);
    }
}

public void StartRecord(object sender, RoutedEventsArg e)
{
    _isRecording = !_isRecording;
}
Другие вопросы по тегам