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
- OracleBinary.cs
- FirstQueryOperator.cs
- EventWaitHandleSecurity.cs
- RegisteredExpandoAttribute.cs
- TimeZoneInfo.cs
- ThemeConfigurationDialog.cs
- Enum.cs
- XPathSingletonIterator.cs
- ISAPIWorkerRequest.cs
- TriggerCollection.cs
- CatalogPartChrome.cs
- OleDbFactory.cs
- DWriteFactory.cs
- LambdaCompiler.ControlFlow.cs
- _Win32.cs
- ImpersonateTokenRef.cs
- Registry.cs
- StrokeNode.cs
- CapabilitiesSection.cs
- SoapClientProtocol.cs
- SerializationSectionGroup.cs
- CompilationSection.cs
- TrackPoint.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- XmlResolver.cs
- QueryOutputWriter.cs
- SQLDecimalStorage.cs
- RuntimeHandles.cs
- ServiceCredentials.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- XmlSchemaComplexType.cs
- HostedHttpRequestAsyncResult.cs
- APCustomTypeDescriptor.cs
- StorageMappingItemLoader.cs
- ColorAnimationUsingKeyFrames.cs
- PrinterUnitConvert.cs
- WorkflowMarkupElementEventArgs.cs
- LiteralTextParser.cs
- EventMap.cs
- IMembershipProvider.cs
- Regex.cs
- PackUriHelper.cs
- URIFormatException.cs
- XPathDocumentIterator.cs
- ProcessManager.cs
- IssuanceLicense.cs
- ManagedIStream.cs
- Win32PrintDialog.cs
- Pair.cs
- LayoutTable.cs
- VerificationAttribute.cs
- XmlNullResolver.cs
- AppDomainProtocolHandler.cs
- CngProperty.cs
- LeaseManager.cs
- StorageConditionPropertyMapping.cs
- ServiceModelSecurityTokenTypes.cs
- ClientTargetCollection.cs
- EmissiveMaterial.cs
- ClientScriptManagerWrapper.cs
- PartialTrustVisibleAssembliesSection.cs
- PathFigureCollectionConverter.cs
- _StreamFramer.cs
- DataTableMappingCollection.cs
- ProgressPage.cs
- RuleSetReference.cs
- PrintDialogException.cs
- CodeThrowExceptionStatement.cs
- xmlsaver.cs
- BufferCache.cs
- EdmItemError.cs
- HttpResponse.cs
- translator.cs
- XmlAtomicValue.cs
- ListViewDeletedEventArgs.cs
- OleDbPermission.cs
- XPathQilFactory.cs
- IpcChannelHelper.cs
- SizeLimitedCache.cs
- WebServiceMethodData.cs
- RootBrowserWindowProxy.cs
- CommandDevice.cs
- ToolStripItemTextRenderEventArgs.cs
- AcceleratedTokenProviderState.cs
- OrderedParallelQuery.cs
- PersistenceTypeAttribute.cs
- PrimitiveCodeDomSerializer.cs
- Switch.cs
- DesignerVerbCollection.cs
- Model3DCollection.cs
- HttpCapabilitiesSectionHandler.cs
- PropertyNames.cs
- DecoderFallbackWithFailureFlag.cs
- XmlUnspecifiedAttribute.cs
- WinFormsSpinner.cs
- ValidationPropertyAttribute.cs
- AnimationStorage.cs
- HostedHttpTransportManager.cs
- ConnectionInterfaceCollection.cs
- BuildResult.cs