protected virtual void Dispose(bool disposing)
 {
     if (disposing && !_disposed)
     {
         if (_recognizerBase != null)
         {
             _recognizerBase.Dispose();
             _recognizerBase = null;
         }
         if (_sapiRecognizer != null)
         {
             _sapiRecognizer.Dispose();
             _sapiRecognizer = null;
         }
         _disposed = true;
     }
 }
Example #2
0
        private static void SetProperty(ISpRecognizer sapiRecognizer, string name, object value)
        {
            SAPIErrorCodes errorCode;

            if (value is int)
            {
                errorCode = (SAPIErrorCodes)sapiRecognizer.SetPropertyNum(name, (int)value);
            }
            else
            {
                errorCode = (SAPIErrorCodes)sapiRecognizer.SetPropertyString(name, (string)value);
            }

            if (errorCode == SAPIErrorCodes.S_FALSE)
            {
                throw new KeyNotFoundException(SR.Get(SRID.RecognizerSettingNotSupported));
            }
            else if (errorCode < SAPIErrorCodes.S_OK)
            {
                throw RecognizerBase.ExceptionFromSapiCreateRecognizerError(new COMException(SR.Get(SRID.RecognizerSettingUpdateError), (int)errorCode));
            }
        }
        internal SapiRecognizer(RecognizerType type)
        {
            ISpRecognizer spRecognizer;

            try
            {
                spRecognizer = ((type != 0) ? ((ISpRecognizer) new SpSharedRecognizer()) : ((ISpRecognizer) new SpInprocRecognizer()));
                _isSap53     = (spRecognizer is ISpRecognizer2);
            }
            catch (COMException e)
            {
                throw RecognizerBase.ExceptionFromSapiCreateRecognizerError(e);
            }
            if (!IsSapi53 && Thread.CurrentThread.GetApartmentState() == ApartmentState.STA)
            {
                Marshal.ReleaseComObject(spRecognizer);
                _proxy = new SapiProxy.MTAThread(type);
            }
            else
            {
                _proxy = new SapiProxy.PassThrough(spRecognizer);
            }
        }