Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ApplicationContext.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventLogPermissionEntryCollection.cs
- ScriptReference.cs
- WizardForm.cs
- ParseNumbers.cs
- SqlCacheDependencySection.cs
- MethodImplAttribute.cs
- AmbientValueAttribute.cs
- Dynamic.cs
- StandardOleMarshalObject.cs
- PlatformCulture.cs
- ApplicationFileCodeDomTreeGenerator.cs
- XhtmlTextWriter.cs
- EntityModelSchemaGenerator.cs
- EncryptedXml.cs
- _NetRes.cs
- DPTypeDescriptorContext.cs
- ColorConverter.cs
- XmlSchemaChoice.cs
- TemplatePropertyEntry.cs
- XamlTemplateSerializer.cs
- EntitySqlQueryCacheEntry.cs
- DeflateStream.cs
- TextSelectionProcessor.cs
- TransformPatternIdentifiers.cs
- SettingsSection.cs
- SqlUtil.cs
- EdmPropertyAttribute.cs
- BamlTreeMap.cs
- COSERVERINFO.cs
- SchemaElementDecl.cs
- TaskFormBase.cs
- Int32CollectionValueSerializer.cs
- SQLBytes.cs
- SqlUDTStorage.cs
- ToolStripCustomTypeDescriptor.cs
- MetaType.cs
- ReadOnlyDictionary.cs
- CardSpacePolicyElement.cs
- PrePrepareMethodAttribute.cs
- IgnoreFileBuildProvider.cs
- DataPointer.cs
- PolicyManager.cs
- ConnectionInterfaceCollection.cs
- CodeSubDirectory.cs
- SqlGatherProducedAliases.cs
- JournalEntryStack.cs
- TypeConvertions.cs
- ReadOnlyDictionary.cs
- DataGridState.cs
- DataKey.cs
- OleStrCAMarshaler.cs
- EventListener.cs
- Mutex.cs
- SoapEnumAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- SortAction.cs
- XmlObjectSerializerWriteContextComplex.cs
- BaseParagraph.cs
- ObjectManager.cs
- DataFormat.cs
- XmlSchemaSimpleType.cs
- ErrorWrapper.cs
- ProjectionPathBuilder.cs
- NonClientArea.cs
- Polygon.cs
- CacheRequest.cs
- XmlText.cs
- UrlMappingsModule.cs
- RightsManagementEncryptedStream.cs
- updatecommandorderer.cs
- NominalTypeEliminator.cs
- FileLevelControlBuilderAttribute.cs
- ipaddressinformationcollection.cs
- SpanIndex.cs
- SqlCacheDependencyDatabaseCollection.cs
- Directory.cs
- ExitEventArgs.cs
- XmlTextWriter.cs
- TableFieldsEditor.cs
- DataObjectPastingEventArgs.cs
- TextRenderer.cs
- SchemaHelper.cs
- ZipIOExtraFieldPaddingElement.cs
- _SpnDictionary.cs
- RegexReplacement.cs
- SqlClientMetaDataCollectionNames.cs
- PartManifestEntry.cs
- TraceSection.cs
- ResXResourceWriter.cs
- PropertyGeneratedEventArgs.cs
- XmlNavigatorStack.cs
- TemplateBindingExtensionConverter.cs
- FixedSOMLineCollection.cs
- ReadOnlyDictionary.cs
- LifetimeMonitor.cs
- BadImageFormatException.cs
- CookielessData.cs
- TypeDescriptorFilterService.cs
- MouseEvent.cs
- ValidateNames.cs