Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / SapiInterop / EventNotify.cs / 1 / EventNotify.cs
//------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------- using System; using System.Diagnostics; using System.Speech.Internal.SapiInterop; using System.Threading; using System.Speech.AudioFormat; using System.Collections.Generic; namespace System.Speech.Internal.SapiInterop { internal class SpNotifySink : ISpNotifySink { public SpNotifySink (EventNotify eventNotify) { _eventNotifyReference = new WeakReference (eventNotify); } void ISpNotifySink.Notify () { EventNotify eventNotify = (EventNotify) _eventNotifyReference.Target; if (eventNotify != null) { ThreadPool.QueueUserWorkItem (new WaitCallback (eventNotify.SendNotification)); } } private WeakReference _eventNotifyReference; } /// Dispatches events from ISpEventSource to DispatchEventDelegate on a thread /// compatible with the application model of the thread that created this object. internal class EventNotify { //******************************************************************* // // Constructors // //******************************************************************* #region Constructors internal EventNotify (ISpEventSource sapiEventSource, IAsyncDispatch dispatcher, bool additionalSapiFeatures) { // Remember event source _sapiEventSourceReference = new WeakReference (sapiEventSource); _dispatcher = dispatcher; _additionalSapiFeatures = additionalSapiFeatures; // Start listening to events from sapiEventSource. _notifySink = new SpNotifySink (this); sapiEventSource.SetNotifySink (_notifySink); } #endregion Constructors //******************************************************************** // // Internal Methods // //******************************************************************* #region Internal Methods // Finalizer is not required since ISpEventSource and AsyncOperation both implement appropriate finalizers. internal void Dispose () { lock (this) { // Since we are explicitly calling Dispose(), sapiEventSource (RCW) will normally be alive. // If Dispose() is called from a finalizer this may not be the case so check for null. if (_sapiEventSourceReference != null) { ISpEventSource sapiEventSource = (ISpEventSource) _sapiEventSourceReference.Target; if (sapiEventSource != null) { // Stop listening to events from sapiEventSource. sapiEventSource.SetNotifySink (null); _notifySink = null; } } _sapiEventSourceReference = null; } } internal void SendNotification (object ignored) { lock (this) { // Call dispatchEventDelegate for each SAPI event currently queued. if (_sapiEventSourceReference != null) { ISpEventSource sapiEventSource = (ISpEventSource) _sapiEventSourceReference.Target; if (sapiEventSource != null) { ListspeechEvents = new List (); SpeechEvent speechEvent; while (null != (speechEvent = SpeechEvent.TryCreateSpeechEvent (sapiEventSource, _additionalSapiFeatures, _audioFormat))) { speechEvents.Add (speechEvent); } _dispatcher.Post (speechEvents.ToArray ()); } } } } #endregion Methods //******************************************************************** // // Internal Properties // //******************************************************************** #region Internal Properties internal SpeechAudioFormatInfo AudioFormat { set { _audioFormat = value; } } #endregion Methods //******************************************************************* // // Private Methods // //******************************************************************** #region Private Methods #endregion //******************************************************************* // // Private Fields // //******************************************************************* #region Private Fields private IAsyncDispatch _dispatcher; private WeakReference _sapiEventSourceReference; private bool _additionalSapiFeatures; private SpeechAudioFormatInfo _audioFormat; private ISpNotifySink _notifySink; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptControl.cs
- MultiTrigger.cs
- Formatter.cs
- DataGridViewCheckBoxColumn.cs
- KeyToListMap.cs
- ThreadAbortException.cs
- BuildResult.cs
- SkinIDTypeConverter.cs
- _ShellExpression.cs
- CompModSwitches.cs
- KnownBoxes.cs
- FilteredSchemaElementLookUpTable.cs
- WorkflowFileItem.cs
- PathStreamGeometryContext.cs
- Attributes.cs
- LocalizationParserHooks.cs
- CacheVirtualItemsEvent.cs
- XomlCompilerParameters.cs
- RequestNavigateEventArgs.cs
- X509SecurityTokenAuthenticator.cs
- PropertyGridEditorPart.cs
- HandleCollector.cs
- SafeProcessHandle.cs
- HandlerFactoryWrapper.cs
- CustomValidator.cs
- VariableDesigner.xaml.cs
- SqlWebEventProvider.cs
- PixelFormats.cs
- InputProcessorProfiles.cs
- FamilyTypefaceCollection.cs
- DesignerAutoFormatCollection.cs
- HtmlButton.cs
- MissingFieldException.cs
- WebUtil.cs
- PolyBezierSegment.cs
- PackagingUtilities.cs
- HostingEnvironmentWrapper.cs
- RawUIStateInputReport.cs
- SmiContextFactory.cs
- ZipQueryOperator.cs
- SurrogateSelector.cs
- InvokeProviderWrapper.cs
- TrackingAnnotationCollection.cs
- CodeVariableReferenceExpression.cs
- AlgoModule.cs
- arabicshape.cs
- ByteConverter.cs
- precedingsibling.cs
- SmtpSection.cs
- StylusPointPropertyId.cs
- CodeAccessPermission.cs
- XhtmlBasicTextViewAdapter.cs
- CommandHelpers.cs
- CodeSubDirectoriesCollection.cs
- TemplateBindingExtension.cs
- CanExpandCollapseAllConverter.cs
- GcSettings.cs
- XmlUtil.cs
- RenderingBiasValidation.cs
- SqlTopReducer.cs
- ControlBuilderAttribute.cs
- EventHandlerList.cs
- LinearGradientBrush.cs
- StrongBox.cs
- SqlBooleanizer.cs
- Touch.cs
- listitem.cs
- BufferedGraphicsContext.cs
- SHA1Managed.cs
- PointLightBase.cs
- DataServiceConfiguration.cs
- HtmlControl.cs
- MetadataCache.cs
- TransformValueSerializer.cs
- WebBrowserSiteBase.cs
- XmlMembersMapping.cs
- CatalogPartChrome.cs
- DataGridTextBoxColumn.cs
- HttpModuleAction.cs
- ParseNumbers.cs
- XLinq.cs
- JsonByteArrayDataContract.cs
- FrameworkElement.cs
- RIPEMD160.cs
- TypeUtil.cs
- FixedSOMTable.cs
- BlockExpression.cs
- MobileComponentEditorPage.cs
- InvocationExpression.cs
- OneOf.cs
- BaseCodeDomTreeGenerator.cs
- MarshalByRefObject.cs
- PbrsForward.cs
- DocumentPageTextView.cs
- MorphHelpers.cs
- CollectionBuilder.cs
- EmptyImpersonationContext.cs
- PropertyTabChangedEvent.cs
- CompilationLock.cs
- _Win32.cs