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
- NodeCounter.cs
- SqlExpressionNullability.cs
- RawStylusInput.cs
- InvokerUtil.cs
- ShutDownListener.cs
- ArgumentElement.cs
- PolyLineSegmentFigureLogic.cs
- DataGridViewCellCollection.cs
- XmlHelper.cs
- EmptyControlCollection.cs
- SafeNativeMethods.cs
- basevalidator.cs
- _DomainName.cs
- LongAverageAggregationOperator.cs
- CompositeDesignerAccessibleObject.cs
- TextTreeExtractElementUndoUnit.cs
- EntityRecordInfo.cs
- JapaneseCalendar.cs
- XmlBinaryReader.cs
- LabelAutomationPeer.cs
- WindowsRichEditRange.cs
- WebSysDescriptionAttribute.cs
- StyleConverter.cs
- ProviderBase.cs
- HttpStaticObjectsCollectionBase.cs
- DefaultValueTypeConverter.cs
- WebPartEditorOkVerb.cs
- DataGridSortCommandEventArgs.cs
- ZipIOModeEnforcingStream.cs
- HotSpotCollectionEditor.cs
- AppearanceEditorPart.cs
- ViewGenerator.cs
- ThicknessAnimationBase.cs
- WebPartEditVerb.cs
- ResourceExpressionBuilder.cs
- XmlValueConverter.cs
- SocketManager.cs
- ShimAsPublicXamlType.cs
- ExtentKey.cs
- IpcManager.cs
- ComplusEndpointConfigContainer.cs
- TreeNode.cs
- DataRowChangeEvent.cs
- FastEncoderStatics.cs
- WhitespaceSignificantCollectionAttribute.cs
- SubclassTypeValidator.cs
- IndexedString.cs
- ObjectReaderCompiler.cs
- CapabilitiesUse.cs
- TypeName.cs
- HtmlDocument.cs
- DashStyle.cs
- LoginDesignerUtil.cs
- ScriptReferenceEventArgs.cs
- RankException.cs
- SoapClientMessage.cs
- OleDbConnectionFactory.cs
- ListViewSortEventArgs.cs
- StorageMappingItemCollection.cs
- ArgumentException.cs
- StatusBar.cs
- MetadataSection.cs
- SapiGrammar.cs
- ConstraintEnumerator.cs
- XamlInt32CollectionSerializer.cs
- SoapExtensionImporter.cs
- GradientStop.cs
- SqlDependency.cs
- X509SecurityTokenAuthenticator.cs
- OptimalTextSource.cs
- TextElementCollection.cs
- WorkflowPersistenceService.cs
- GradientStop.cs
- HealthMonitoringSectionHelper.cs
- NewArrayExpression.cs
- TreeChangeInfo.cs
- DataGrid.cs
- infer.cs
- Object.cs
- XmlTextWriter.cs
- IntSecurity.cs
- TextHintingModeValidation.cs
- CapabilitiesPattern.cs
- MatchingStyle.cs
- ParsedAttributeCollection.cs
- Matrix.cs
- XsltException.cs
- Stroke2.cs
- IndependentAnimationStorage.cs
- HttpInputStream.cs
- NumericUpDown.cs
- IncrementalReadDecoders.cs
- ImportCatalogPart.cs
- OrderedDictionary.cs
- SecurityManager.cs
- ChannelManagerHelpers.cs
- IteratorFilter.cs
- CompilerTypeWithParams.cs
- SchemaInfo.cs
- InputMethod.cs