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
- WebEvents.cs
- CompiledXpathExpr.cs
- BamlLocalizabilityResolver.cs
- StateMachineSubscription.cs
- ButtonChrome.cs
- SplayTreeNode.cs
- MediaSystem.cs
- UnitControl.cs
- ScrollItemProviderWrapper.cs
- ProxyHelper.cs
- RepeaterDesigner.cs
- OrthographicCamera.cs
- DBCSCodePageEncoding.cs
- Profiler.cs
- BinaryMethodMessage.cs
- UIElementPropertyUndoUnit.cs
- ProgressBar.cs
- RectKeyFrameCollection.cs
- StorageMappingItemCollection.cs
- SelectionItemProviderWrapper.cs
- TrackBarRenderer.cs
- TemplateNameScope.cs
- ContextStack.cs
- As.cs
- CompilationUtil.cs
- SecurityTokenParameters.cs
- ContainerControl.cs
- ParameterToken.cs
- IsolatedStorageFile.cs
- NamespaceExpr.cs
- PartialArray.cs
- TypeContext.cs
- MetadataHelper.cs
- FontInfo.cs
- LinqDataSourceUpdateEventArgs.cs
- HttpsChannelFactory.cs
- Material.cs
- CallbackHandler.cs
- NegotiationTokenAuthenticatorStateCache.cs
- Hash.cs
- TraversalRequest.cs
- _AutoWebProxyScriptHelper.cs
- LogStore.cs
- HuffCodec.cs
- SafeFindHandle.cs
- Fault.cs
- StandardTransformFactory.cs
- SeparatorAutomationPeer.cs
- UInt64Storage.cs
- AttributeQuery.cs
- RoleManagerSection.cs
- EventSourceCreationData.cs
- ImageSourceConverter.cs
- DataGridViewButtonCell.cs
- ProtocolsConfigurationHandler.cs
- SamlAttributeStatement.cs
- ListViewAutomationPeer.cs
- DeviceFilterDictionary.cs
- XmlElementAttributes.cs
- CanExecuteRoutedEventArgs.cs
- StringDictionary.cs
- ResourceContainer.cs
- Win32.cs
- _FtpDataStream.cs
- ActiveXContainer.cs
- HtmlLabelAdapter.cs
- StateMachineTimers.cs
- CompilerParameters.cs
- BaseAddressElement.cs
- XmlAttributeProperties.cs
- SqlMethodAttribute.cs
- ChangeToolStripParentVerb.cs
- RuleInfoComparer.cs
- RsaSecurityTokenParameters.cs
- PropertyValueChangedEvent.cs
- ProviderBase.cs
- TraceInternal.cs
- RenderDataDrawingContext.cs
- DataControlFieldCell.cs
- CorrelationHandle.cs
- NetMsmqSecurity.cs
- TabControlEvent.cs
- XmlSchemaAppInfo.cs
- PointAnimationUsingKeyFrames.cs
- DrawTreeNodeEventArgs.cs
- SqlException.cs
- DnsElement.cs
- ProgressBarHighlightConverter.cs
- ClientEventManager.cs
- BindingExpression.cs
- Wildcard.cs
- DiscreteKeyFrames.cs
- SafeTokenHandle.cs
- FixedElement.cs
- NullableDecimalMinMaxAggregationOperator.cs
- Compiler.cs
- Thread.cs
- QueryRewriter.cs
- newinstructionaction.cs
- MarkupExtensionReturnTypeAttribute.cs