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
- EntryIndex.cs
- DbTransaction.cs
- DefaultEventAttribute.cs
- BitmapEffectGroup.cs
- JsonSerializer.cs
- LayoutInformation.cs
- ReadOnlyCollection.cs
- UnknownWrapper.cs
- PersonalizationDictionary.cs
- _UriTypeConverter.cs
- EpmContentSerializer.cs
- TTSEngineTypes.cs
- WebPartManagerDesigner.cs
- ObjectManager.cs
- TrustManagerPromptUI.cs
- UIPermission.cs
- ListViewItem.cs
- basevalidator.cs
- RunWorkerCompletedEventArgs.cs
- KeyMatchBuilder.cs
- ContextMenuService.cs
- PeerApplicationLaunchInfo.cs
- SelectionItemPattern.cs
- FixedSOMGroup.cs
- ChineseLunisolarCalendar.cs
- ShutDownListener.cs
- AspNetSynchronizationContext.cs
- NestPullup.cs
- KeyedCollection.cs
- Image.cs
- DrawingGroup.cs
- Soap12FormatExtensions.cs
- DbConnectionFactory.cs
- XsltContext.cs
- DrawingGroup.cs
- Inflater.cs
- ValueChangedEventManager.cs
- LocalValueEnumerator.cs
- ObjectListItemCollection.cs
- ColorConvertedBitmap.cs
- DataGridViewSelectedCellCollection.cs
- Baml2006ReaderFrame.cs
- EncodingNLS.cs
- SessionState.cs
- CommonDialog.cs
- TemplateColumn.cs
- StrokeCollectionConverter.cs
- ValidationSummary.cs
- XmlNode.cs
- BufferAllocator.cs
- SaveFileDialog.cs
- Roles.cs
- DesignerCommandAdapter.cs
- ConstraintCollection.cs
- BitmapCodecInfoInternal.cs
- JsonQNameDataContract.cs
- NetStream.cs
- HMACSHA512.cs
- InternalCache.cs
- CookieParameter.cs
- SqlSupersetValidator.cs
- WebPartTransformerAttribute.cs
- PerfService.cs
- PeekCompletedEventArgs.cs
- AppDomainEvidenceFactory.cs
- IListConverters.cs
- BindingsCollection.cs
- VisualStyleRenderer.cs
- CodeArrayIndexerExpression.cs
- XmlFormatWriterGenerator.cs
- MouseActionValueSerializer.cs
- GuidelineSet.cs
- DebuggerAttributes.cs
- SystemTcpStatistics.cs
- DataGridColumnCollection.cs
- UnknownBitmapDecoder.cs
- FileDialog_Vista.cs
- CryptoConfig.cs
- DrawingState.cs
- SecurityTokenResolver.cs
- Calendar.cs
- RuleInfoComparer.cs
- OuterGlowBitmapEffect.cs
- QilReplaceVisitor.cs
- MsmqElementBase.cs
- ApplyImportsAction.cs
- PassportAuthentication.cs
- IndexedEnumerable.cs
- TraceHandlerErrorFormatter.cs
- DataGridViewCellValueEventArgs.cs
- CompilerState.cs
- Monitor.cs
- SQLCharsStorage.cs
- LocatorGroup.cs
- BitVector32.cs
- NullableBoolConverter.cs
- HostExecutionContextManager.cs
- ProjectionRewriter.cs
- DataBoundControlHelper.cs
- SelectionWordBreaker.cs