Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / ProcessMonitor.cs / 1 / ProcessMonitor.cs
namespace Microsoft.InfoCards { using System; using System.ComponentModel; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; internal class ProcessMonitor { static ProcessMonitor s_current = new ProcessMonitor(); Dictionarym_cache; object m_sync; private ProcessMonitor() { m_sync = new object(); m_cache = new Dictionary (); } public static Process GetProcessById( int id ) { return s_current.InnerGetProcessById( id ); } Process InnerGetProcessById( int id ) { Process process = null; lock( m_sync ) { if( !m_cache.TryGetValue( id, out process ) ) { process = Process.GetProcessById( id ); if( !process.HasExited ) { InitializeProcessObject( process ); // // add the entry to the cache. // m_cache.Add( process.Id, process ); } } } return process; } void InitializeProcessObject( Process process ) { // // This call can create a thread when setting the value to true. // process.EnableRaisingEvents = true; process.Exited += new EventHandler( Process_Exited ); } void Process_Exited( object sender, EventArgs e ) { Process process = (Process)sender; lock( m_sync ) { m_cache.Remove( process.Id ); } process.Exited -= new EventHandler( Process_Exited ); } } } // 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
- FigureParaClient.cs
- TextEditorThreadLocalStore.cs
- PauseStoryboard.cs
- Adorner.cs
- PropertyValueUIItem.cs
- DataGridColumnReorderingEventArgs.cs
- ProjectionPruner.cs
- XmlSubtreeReader.cs
- ServiceEndpointElementCollection.cs
- EventSinkHelperWriter.cs
- DataServiceQueryException.cs
- AQNBuilder.cs
- ManagementOperationWatcher.cs
- OLEDB_Enum.cs
- RoleBoolean.cs
- DeleteBookmarkScope.cs
- SystemKeyConverter.cs
- BrowserCapabilitiesFactoryBase.cs
- PeerNameResolver.cs
- WindowsStatic.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ApplicationInfo.cs
- Ray3DHitTestResult.cs
- RayHitTestParameters.cs
- System.Data_BID.cs
- PopupControlService.cs
- ZoneButton.cs
- AssertSection.cs
- ResourceReferenceExpressionConverter.cs
- CompilationUtil.cs
- FontFamily.cs
- DesignerCatalogPartChrome.cs
- XmlCharacterData.cs
- XamlSerializer.cs
- DataGridViewCellFormattingEventArgs.cs
- WorkingDirectoryEditor.cs
- DefaultPropertiesToSend.cs
- DataGridViewHitTestInfo.cs
- TypeReference.cs
- _LazyAsyncResult.cs
- ResourceDictionary.cs
- KeyFrames.cs
- ErrorLog.cs
- XmlSubtreeReader.cs
- ImageInfo.cs
- ColorContext.cs
- COM2PictureConverter.cs
- DataSetUtil.cs
- SocketElement.cs
- SwitchLevelAttribute.cs
- SerializationAttributes.cs
- __TransparentProxy.cs
- XmlBindingWorker.cs
- SpecialNameAttribute.cs
- SizeConverter.cs
- unsafenativemethodstextservices.cs
- Guid.cs
- HandledEventArgs.cs
- MeasureData.cs
- GeneralTransform3D.cs
- ElementHostPropertyMap.cs
- Rule.cs
- EditorBrowsableAttribute.cs
- versioninfo.cs
- DesignerActionMethodItem.cs
- StringBuilder.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CellLabel.cs
- CompilationLock.cs
- InstanceKeyNotReadyException.cs
- PointLightBase.cs
- TempFiles.cs
- VirtualDirectoryMappingCollection.cs
- DbConnectionPoolOptions.cs
- URLString.cs
- EndpointDiscoveryMetadata11.cs
- Constants.cs
- CompositeDesignerAccessibleObject.cs
- OracleConnectionString.cs
- Propagator.Evaluator.cs
- JournalEntryStack.cs
- DbProviderFactory.cs
- DifferencingCollection.cs
- PropertyReferenceSerializer.cs
- HostedImpersonationContext.cs
- BuildManagerHost.cs
- SoapDocumentMethodAttribute.cs
- SapiRecoInterop.cs
- CopyOfAction.cs
- TextTreeInsertElementUndoUnit.cs
- FileDialogPermission.cs
- FileLogRecord.cs
- DataError.cs
- TabControl.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- DataControlFieldHeaderCell.cs
- IndentedTextWriter.cs
- TextProviderWrapper.cs
- BitmapEffectDrawing.cs
- BamlResourceDeserializer.cs