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();
Dictionary m_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
- PingReply.cs
- HuffModule.cs
- StrokeNodeEnumerator.cs
- AxisAngleRotation3D.cs
- designeractionlistschangedeventargs.cs
- DbConnectionClosed.cs
- ObjectViewListener.cs
- BitmapEffectDrawingContextState.cs
- GeometryHitTestResult.cs
- ImageField.cs
- WebBrowserNavigatingEventHandler.cs
- CompositeScriptReference.cs
- TextDecorationLocationValidation.cs
- IPGlobalProperties.cs
- SapiRecognizer.cs
- DBSchemaTable.cs
- FixedPage.cs
- MemberProjectedSlot.cs
- PermissionSetEnumerator.cs
- StdValidatorsAndConverters.cs
- CrossAppDomainChannel.cs
- FontFamilyIdentifier.cs
- SessionStateItemCollection.cs
- IgnoreDeviceFilterElement.cs
- TcpTransportSecurityElement.cs
- ListControlConvertEventArgs.cs
- CodeCastExpression.cs
- EqualityComparer.cs
- Encoder.cs
- Context.cs
- ValidationHelper.cs
- SolidColorBrush.cs
- ComplexBindingPropertiesAttribute.cs
- WebExceptionStatus.cs
- ActivityInterfaces.cs
- DockPattern.cs
- DiagnosticStrings.cs
- CacheOutputQuery.cs
- TypeElementCollection.cs
- RequestCachingSection.cs
- RemoveStoryboard.cs
- CngKeyBlobFormat.cs
- SafeHandles.cs
- SpeechSynthesizer.cs
- RewritingValidator.cs
- Canvas.cs
- RefreshPropertiesAttribute.cs
- CodeTypeReference.cs
- CreateParams.cs
- ProcessHostConfigUtils.cs
- HotSpot.cs
- NavigationService.cs
- PathSegmentCollection.cs
- ListBindableAttribute.cs
- Visitor.cs
- ReaderWriterLock.cs
- Pen.cs
- StandardBindingElement.cs
- WebPartEventArgs.cs
- OutputScopeManager.cs
- DefaultValueMapping.cs
- ThicknessKeyFrameCollection.cs
- OleDbConnectionInternal.cs
- BidOverLoads.cs
- CapabilitiesSection.cs
- TimeSpanValidatorAttribute.cs
- ImageButton.cs
- OdbcDataAdapter.cs
- HtmlEmptyTagControlBuilder.cs
- FontStyle.cs
- Pool.cs
- UTF8Encoding.cs
- SQLInt32Storage.cs
- ContextQuery.cs
- ByteAnimation.cs
- BamlResourceSerializer.cs
- ContainerControl.cs
- RouteItem.cs
- MLangCodePageEncoding.cs
- BitmapEffectDrawingContextWalker.cs
- StackOverflowException.cs
- ViewPort3D.cs
- DataStorage.cs
- TextEditorCharacters.cs
- XAMLParseException.cs
- HttpResponseMessageProperty.cs
- ContentFilePart.cs
- WebPartEditorApplyVerb.cs
- InheritedPropertyChangedEventArgs.cs
- CopyAction.cs
- EpmHelper.cs
- FaultImportOptions.cs
- ImageAnimator.cs
- DefaultPrintController.cs
- DataBindingList.cs
- formatter.cs
- FileDialog.cs
- CultureData.cs
- ComPlusInstanceProvider.cs
- SystemThemeKey.cs