Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / WinForms / Managed / System / WinForms / ApplicationContext.cs / 1 / ApplicationContext.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Diagnostics; using System.ComponentModel; ////// /// ApplicationContext provides contextual information about an application /// thread. Specifically this allows an application author to redifine what /// circurmstances cause a message loop to exit. By default the application /// context listens to the close event on the mainForm, then exits the /// thread's message loop. /// public class ApplicationContext : IDisposable { Form mainForm; object userData; ////// /// Creates a new ApplicationContext with no mainForm. /// public ApplicationContext() : this(null) { } ////// /// Creates a new ApplicationContext with the specified mainForm. /// If OnMainFormClosed is not overriden, the thread's message /// loop will be terminated when mainForm is closed. /// public ApplicationContext(Form mainForm) { this.MainForm = mainForm; } ///~ApplicationContext() { Dispose(false); } /// /// /// Determines the mainForm for this context. This may be changed /// at anytime. /// If OnMainFormClosed is not overriden, the thread's message /// loop will be terminated when mainForm is closed. /// public Form MainForm { get { return mainForm; } set { EventHandler onClose = new EventHandler(OnMainFormDestroy); if (mainForm != null) { mainForm.HandleDestroyed -= onClose; } mainForm = value; if (mainForm != null) { mainForm.HandleDestroyed += onClose; } } } ///[ SRCategory(SR.CatData), Localizable(false), Bindable(true), SRDescription(SR.ControlTagDescr), DefaultValue(null), TypeConverter(typeof(StringConverter)), ] public object Tag { get { return userData; } set { userData = value; } } /// /// /// Is raised when the thread's message loop should be terminated. /// This is raised by calling ExitThread. /// public event EventHandler ThreadExit; ////// /// Disposes the context. This should dispose the mainForm. This is /// called immediately after the thread's message loop is terminated. /// Application will dispose all forms on this thread by default. /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ///protected virtual void Dispose(bool disposing) { if (disposing) { if (mainForm != null) { if (!mainForm.IsDisposed) { mainForm.Dispose(); } mainForm = null; } } } /// /// /// Causes the thread's message loop to be terminated. This /// will call ExitThreadCore. /// public void ExitThread() { ExitThreadCore(); } ////// /// Causes the thread's message loop to be terminated. /// protected virtual void ExitThreadCore() { if (ThreadExit != null) { ThreadExit(this, EventArgs.Empty); } } ////// /// Called when the mainForm is closed. The default implementation /// of this will call ExitThreadCore. /// protected virtual void OnMainFormClosed(object sender, EventArgs e) { ExitThreadCore(); } ////// Called when the mainForm is closed. The default implementation /// of this will call ExitThreadCore. /// private void OnMainFormDestroy(object sender, EventArgs e) { Form form = (Form)sender; if (!form.RecreatingHandle) { form.HandleDestroyed -= new EventHandler(OnMainFormDestroy); OnMainFormClosed(sender, e); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Diagnostics; using System.ComponentModel; ////// /// ApplicationContext provides contextual information about an application /// thread. Specifically this allows an application author to redifine what /// circurmstances cause a message loop to exit. By default the application /// context listens to the close event on the mainForm, then exits the /// thread's message loop. /// public class ApplicationContext : IDisposable { Form mainForm; object userData; ////// /// Creates a new ApplicationContext with no mainForm. /// public ApplicationContext() : this(null) { } ////// /// Creates a new ApplicationContext with the specified mainForm. /// If OnMainFormClosed is not overriden, the thread's message /// loop will be terminated when mainForm is closed. /// public ApplicationContext(Form mainForm) { this.MainForm = mainForm; } ///~ApplicationContext() { Dispose(false); } /// /// /// Determines the mainForm for this context. This may be changed /// at anytime. /// If OnMainFormClosed is not overriden, the thread's message /// loop will be terminated when mainForm is closed. /// public Form MainForm { get { return mainForm; } set { EventHandler onClose = new EventHandler(OnMainFormDestroy); if (mainForm != null) { mainForm.HandleDestroyed -= onClose; } mainForm = value; if (mainForm != null) { mainForm.HandleDestroyed += onClose; } } } ///[ SRCategory(SR.CatData), Localizable(false), Bindable(true), SRDescription(SR.ControlTagDescr), DefaultValue(null), TypeConverter(typeof(StringConverter)), ] public object Tag { get { return userData; } set { userData = value; } } /// /// /// Is raised when the thread's message loop should be terminated. /// This is raised by calling ExitThread. /// public event EventHandler ThreadExit; ////// /// Disposes the context. This should dispose the mainForm. This is /// called immediately after the thread's message loop is terminated. /// Application will dispose all forms on this thread by default. /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ///protected virtual void Dispose(bool disposing) { if (disposing) { if (mainForm != null) { if (!mainForm.IsDisposed) { mainForm.Dispose(); } mainForm = null; } } } /// /// /// Causes the thread's message loop to be terminated. This /// will call ExitThreadCore. /// public void ExitThread() { ExitThreadCore(); } ////// /// Causes the thread's message loop to be terminated. /// protected virtual void ExitThreadCore() { if (ThreadExit != null) { ThreadExit(this, EventArgs.Empty); } } ////// /// Called when the mainForm is closed. The default implementation /// of this will call ExitThreadCore. /// protected virtual void OnMainFormClosed(object sender, EventArgs e) { ExitThreadCore(); } ////// Called when the mainForm is closed. The default implementation /// of this will call ExitThreadCore. /// private void OnMainFormDestroy(object sender, EventArgs e) { Form form = (Form)sender; if (!form.RecreatingHandle) { form.HandleDestroyed -= new EventHandler(OnMainFormDestroy); OnMainFormClosed(sender, e); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InternalMappingException.cs
- Vector.cs
- ManagementPath.cs
- MenuItemCollection.cs
- Serializer.cs
- NetworkInformationException.cs
- RectangleGeometry.cs
- ServiceHttpHandlerFactory.cs
- SelectionPatternIdentifiers.cs
- ValidationError.cs
- FilteredXmlReader.cs
- DataGridViewHeaderCell.cs
- DiscoveryClientBindingElement.cs
- OracleTimeSpan.cs
- AssemblyResolver.cs
- StringSource.cs
- InstanceCreationEditor.cs
- StructuralObject.cs
- Cursor.cs
- ControlPaint.cs
- ForceCopyBuildProvider.cs
- SqlConnectionString.cs
- GenericWebPart.cs
- SelectorItemAutomationPeer.cs
- HttpConfigurationSystem.cs
- Application.cs
- FullTrustAssemblyCollection.cs
- TransformValueSerializer.cs
- TypeConverterHelper.cs
- ValidatorCompatibilityHelper.cs
- TextServicesDisplayAttributePropertyRanges.cs
- StaticDataManager.cs
- ClientSettingsSection.cs
- ClonableStack.cs
- EdmProviderManifest.cs
- TextTreePropertyUndoUnit.cs
- DesigntimeLicenseContext.cs
- TemplatedWizardStep.cs
- CheckoutException.cs
- CodeTypeMemberCollection.cs
- FlatButtonAppearance.cs
- ThreadStaticAttribute.cs
- FilteredXmlReader.cs
- DataDocumentXPathNavigator.cs
- EndpointDiscoveryMetadata.cs
- ActivationServices.cs
- BehaviorEditorPart.cs
- DateTimeUtil.cs
- BitArray.cs
- ColorContextHelper.cs
- EdmItemError.cs
- CompilerParameters.cs
- RegexFCD.cs
- FigureParaClient.cs
- PeerContact.cs
- SymmetricCryptoHandle.cs
- SerializationHelper.cs
- WebPartPersonalization.cs
- ManipulationDelta.cs
- ObjectDataSourceDisposingEventArgs.cs
- SystemWebSectionGroup.cs
- Validator.cs
- StringArrayConverter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- VectorAnimationBase.cs
- DataSetUtil.cs
- Perspective.cs
- ListSortDescriptionCollection.cs
- TextTreeInsertElementUndoUnit.cs
- DigitShape.cs
- FormsIdentity.cs
- ITreeGenerator.cs
- Attribute.cs
- ProcessModelSection.cs
- ChangePasswordAutoFormat.cs
- DataListItem.cs
- InstanceDescriptor.cs
- MediaSystem.cs
- SchemaComplexType.cs
- AutoGeneratedField.cs
- MethodAccessException.cs
- HandlerFactoryWrapper.cs
- ActionItem.cs
- WindowsListBox.cs
- TextEndOfParagraph.cs
- DataTransferEventArgs.cs
- AppDomainUnloadedException.cs
- DropDownButton.cs
- ToolTipService.cs
- ConversionContext.cs
- HttpFileCollection.cs
- WebPartVerbsEventArgs.cs
- UrlMappingCollection.cs
- StreamUpdate.cs
- ProcessStartInfo.cs
- FakeModelItemImpl.cs
- SoapFault.cs
- XmlNamespaceMappingCollection.cs
- Win32PrintDialog.cs
- ArraySubsetEnumerator.cs