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; } }
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); } }