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
- InvalidComObjectException.cs
- RIPEMD160Managed.cs
- ValidationRuleCollection.cs
- DataService.cs
- ModelPropertyDescriptor.cs
- WebContext.cs
- AggregateNode.cs
- EventDescriptor.cs
- CollectionViewGroup.cs
- ChameleonKey.cs
- ConnectionManagementElementCollection.cs
- Privilege.cs
- ProxyFragment.cs
- XPathCompiler.cs
- PersonalizationProviderCollection.cs
- VirtualPath.cs
- ISSmlParser.cs
- VirtualizedContainerService.cs
- FontDialog.cs
- DbConnectionInternal.cs
- ThousandthOfEmRealDoubles.cs
- MD5CryptoServiceProvider.cs
- PolyLineSegment.cs
- Application.cs
- XmlNamedNodeMap.cs
- XmlDataProvider.cs
- SiteMapProvider.cs
- SizeValueSerializer.cs
- HttpDateParse.cs
- TextAdaptor.cs
- QueryExpression.cs
- XmlDesignerDataSourceView.cs
- cookiecollection.cs
- TemplateBuilder.cs
- LambdaCompiler.Expressions.cs
- MultiView.cs
- ProcessThreadCollection.cs
- BinaryObjectInfo.cs
- AlternateView.cs
- _AuthenticationState.cs
- LinqDataSourceValidationException.cs
- ResourceExpressionBuilder.cs
- OneWayChannelFactory.cs
- DocumentViewerHelper.cs
- MDIClient.cs
- initElementDictionary.cs
- WindowsIPAddress.cs
- Help.cs
- Keywords.cs
- DayRenderEvent.cs
- InternalConfigSettingsFactory.cs
- HasCopySemanticsAttribute.cs
- NativeCompoundFileAPIs.cs
- SqlParameterizer.cs
- ImageMetadata.cs
- DataControlFieldHeaderCell.cs
- SqlDataRecord.cs
- AssociationSet.cs
- VideoDrawing.cs
- InsufficientMemoryException.cs
- StringKeyFrameCollection.cs
- UniqueIdentifierService.cs
- AQNBuilder.cs
- TypographyProperties.cs
- InheritanceContextChangedEventManager.cs
- Invariant.cs
- ByteStack.cs
- TraceData.cs
- ToolboxItem.cs
- DocumentPropertiesDialog.cs
- OdbcConnectionPoolProviderInfo.cs
- PropertyEmitter.cs
- PageStatePersister.cs
- TextSchema.cs
- ContentValidator.cs
- CodeChecksumPragma.cs
- XmlAttributeProperties.cs
- Point3DCollection.cs
- SrgsElementFactory.cs
- CultureTable.cs
- XmlAttributeAttribute.cs
- NaturalLanguageHyphenator.cs
- BorderSidesEditor.cs
- WebPartPersonalization.cs
- PngBitmapEncoder.cs
- ValidationHelper.cs
- SchemaTableOptionalColumn.cs
- VolatileEnlistmentMultiplexing.cs
- CombinedGeometry.cs
- AudioDeviceOut.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- EmbeddedObject.cs
- RoleManagerEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- StringValueSerializer.cs
- MetadataArtifactLoaderCompositeFile.cs
- CompilerResults.cs
- HttpHandlerActionCollection.cs
- WsdlImporter.cs
- WebPartExportVerb.cs