/// <summary> /// Asynchronously handles recognition results and forwards them to subscribers (e.g. SketchPanels) /// </summary> /// <param name="receipt">a receipt thrown once the result is available; the /// recognition result can be retrieved from this receipt</param> private void processRecognitionResult(IAsyncResult receipt) { // read result AsyncResult asResult = (AsyncResult)receipt; FireRecognition frDelegate = (FireRecognition)asResult.AsyncDelegate; RecognitionResult recogResult = frDelegate.EndInvoke(receipt); // publish result to panel RecognitionResultsEventHandler rrDelegate = new RecognitionResultsEventHandler(parentPanel.SetRecognitionResult); // parentPanel.Invoke(rrDelegate, new object[] { this, recogResult }); }
/// <summary> /// Handles recogntion trigger events. Forwards recognition arguments to the real recognizer. /// </summary> /// <param name="source">The source panel of this trigger event</param> /// <param name="ra">The recognition arguments to forward (e.g., the sketch to be recognized)</param> private void panel_RecognitionTriggered(SketchPanel source, RecognitionArgs ra) { FireRecognition frDelegate = new FireRecognition(this.Recognize); frDelegate.BeginInvoke(ra, this.processRecognitionResult, null); }