private void ManagedWrapper_LearnCompleted(object sender, LearnCompletedEventArgs e)
{
var syncLearnResults = e.UserState as SyncLearnResults;
if (null == syncLearnResults) {
throw new ApplicationException("invalid userState received");
}
syncLearnResults.LearnCompletedEventArgs = e;
syncLearnResults.WaitEvent.Set();
}