Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / Util / FileChangeNotifier.cs / 1305376 / FileChangeNotifier.cs
using System.Collections; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections.Specialized; using System.Diagnostics; using System.Web.Resources; using System.Globalization; using System.Web.Caching; using System.Web.Hosting; namespace System.Web.DynamicData { delegate void FileChangedCallback(string path); class FileChangeNotifier { private static VirtualPathProvider _vpp; internal static VirtualPathProvider VirtualPathProvider { private get { if (_vpp == null) { _vpp = HostingEnvironment.VirtualPathProvider; } return _vpp; } // For unit test purpose set { _vpp = value; } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "System.Web.DynamicData.FileChangeNotifier", Justification="The object deals with file change notifications and we don't need to hold on to it")] internal static void Register(string virtualPath, FileChangedCallback onFileChanged) { new FileChangeNotifier(virtualPath, onFileChanged); } private FileChangedCallback _onFileChanged; private FileChangeNotifier(string virtualPath, FileChangedCallback onFileChanged) { _onFileChanged = onFileChanged; RegisterForNextNotification(virtualPath); } private void RegisterForNextNotification(string virtualPath) { // Get a CacheDependency from the BuildProvider, so that we know anytime something changes var virtualPathDependencies = new List(); virtualPathDependencies.Add(virtualPath); CacheDependency cacheDependency = VirtualPathProvider.GetCacheDependency( virtualPath, virtualPathDependencies, DateTime.UtcNow); // Rely on the ASP.NET cache for file change notifications, since FileSystemWatcher // doesn't work in medium trust HttpRuntime.Cache.Insert(virtualPath /*key*/, virtualPath /*value*/, cacheDependency, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, new CacheItemRemovedCallback(OnCacheItemRemoved)); } private void OnCacheItemRemoved(string key, object value, CacheItemRemovedReason reason) { // We only care about dependency changes if (reason != CacheItemRemovedReason.DependencyChanged) return; _onFileChanged(key); // We need to register again to get the next notification RegisterForNextNotification(key); } } } // 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
- RedistVersionInfo.cs
- NativeMethods.cs
- SQLDecimalStorage.cs
- SolidBrush.cs
- StructuredProperty.cs
- BinaryMethodMessage.cs
- Repeater.cs
- Queue.cs
- Container.cs
- DuplicateWaitObjectException.cs
- FormViewPageEventArgs.cs
- StandardToolWindows.cs
- Calendar.cs
- GroupBoxAutomationPeer.cs
- CreateCardRequest.cs
- FrameworkRichTextComposition.cs
- XpsSerializationException.cs
- HostUtils.cs
- ToolStripButton.cs
- TypeInfo.cs
- VisualCollection.cs
- CodeFieldReferenceExpression.cs
- HandleCollector.cs
- PlanCompilerUtil.cs
- FixedSOMTableCell.cs
- DataTable.cs
- SqlXml.cs
- WeakHashtable.cs
- TableRow.cs
- AccessDataSource.cs
- AssertSection.cs
- SpeechRecognizer.cs
- ZipIOLocalFileDataDescriptor.cs
- TokenBasedSet.cs
- XmlReaderDelegator.cs
- ToolboxComponentsCreatedEventArgs.cs
- WebPartDeleteVerb.cs
- PageThemeParser.cs
- XmlSchemaChoice.cs
- HyperLinkDesigner.cs
- InternalReceiveMessage.cs
- DataGridViewHitTestInfo.cs
- EntityConnectionStringBuilder.cs
- ConfigurationSectionGroup.cs
- VersionPair.cs
- LinkedResource.cs
- HttpBrowserCapabilitiesWrapper.cs
- UserControlParser.cs
- CfgParser.cs
- HttpResponseHeader.cs
- LayoutUtils.cs
- XMLSchema.cs
- GlobalizationAssembly.cs
- DPAPIProtectedConfigurationProvider.cs
- ViewLoader.cs
- Pkcs7Signer.cs
- View.cs
- SafeProcessHandle.cs
- RegisterResponseInfo.cs
- DataGridRowClipboardEventArgs.cs
- ScaleTransform.cs
- SqlClientWrapperSmiStreamChars.cs
- Storyboard.cs
- DataViewManagerListItemTypeDescriptor.cs
- InputScopeManager.cs
- Calendar.cs
- InputBuffer.cs
- ServiceDescription.cs
- BitmapInitialize.cs
- ItemCheckEvent.cs
- TextServicesHost.cs
- hresults.cs
- CorrelationManager.cs
- PackagePartCollection.cs
- SoapAttributeAttribute.cs
- MenuItemStyle.cs
- XsltLoader.cs
- basecomparevalidator.cs
- HttpRequest.cs
- BordersPage.cs
- ApplicationDirectoryMembershipCondition.cs
- FileInfo.cs
- XmlSchemas.cs
- PiiTraceSource.cs
- TripleDESCryptoServiceProvider.cs
- XhtmlConformanceSection.cs
- SerializationObjectManager.cs
- odbcmetadatacollectionnames.cs
- Lease.cs
- ObjectCloneHelper.cs
- ContractReference.cs
- WebRequest.cs
- WaitForChangedResult.cs
- BindingWorker.cs
- HtmlElementCollection.cs
- SortedDictionary.cs
- WebPartMovingEventArgs.cs
- ScrollPattern.cs
- manifestimages.cs
- DataMisalignedException.cs