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
- WebPartConnectionsCloseVerb.cs
- TrackingMemoryStreamFactory.cs
- StrokeSerializer.cs
- ReliableChannelListener.cs
- HtmlHistory.cs
- TdsRecordBufferSetter.cs
- PlanCompilerUtil.cs
- LogEntrySerialization.cs
- ListViewUpdatedEventArgs.cs
- LassoHelper.cs
- ComponentRenameEvent.cs
- QilPatternFactory.cs
- GrammarBuilder.cs
- ManipulationPivot.cs
- CultureTableRecord.cs
- NotFiniteNumberException.cs
- CachedBitmap.cs
- PriorityItem.cs
- RelationshipWrapper.cs
- BuildDependencySet.cs
- WindowsListViewItemStartMenu.cs
- ToolStripMenuItem.cs
- PeerUnsafeNativeMethods.cs
- XmlAtomicValue.cs
- FileDataSourceCache.cs
- XmlBinaryWriterSession.cs
- SqlDataReader.cs
- SizeF.cs
- PublisherIdentityPermission.cs
- GridErrorDlg.cs
- CommonXSendMessage.cs
- HandleTable.cs
- DesignerTextBoxAdapter.cs
- GridViewSortEventArgs.cs
- DBSqlParser.cs
- UIntPtr.cs
- BitmapFrameDecode.cs
- ListViewDeleteEventArgs.cs
- Model3D.cs
- SqlDependencyUtils.cs
- PrintingPermissionAttribute.cs
- xml.cs
- DbProviderFactory.cs
- BrowserCapabilitiesCompiler.cs
- ClientData.cs
- ScriptModule.cs
- MSG.cs
- TableCellCollection.cs
- WriteableBitmap.cs
- ZipIOExtraFieldElement.cs
- SyndicationDeserializer.cs
- FontFamilyIdentifier.cs
- UIElement.cs
- Label.cs
- FontDriver.cs
- HtmlTextArea.cs
- FragmentQueryProcessor.cs
- ADRoleFactoryConfiguration.cs
- OperationFormatter.cs
- QueuePathEditor.cs
- RawContentTypeMapper.cs
- SimplePropertyEntry.cs
- HelpInfo.cs
- mediapermission.cs
- SingletonInstanceContextProvider.cs
- RewritingPass.cs
- Compiler.cs
- Matrix3DConverter.cs
- DataServiceQuery.cs
- CssStyleCollection.cs
- WindowsAltTab.cs
- LayoutSettings.cs
- TextEditorParagraphs.cs
- XmlReaderDelegator.cs
- assertwrapper.cs
- TextBoxDesigner.cs
- DataGridViewSelectedColumnCollection.cs
- DataGridBoundColumn.cs
- MarkupObject.cs
- DrawingContext.cs
- MaterialGroup.cs
- DummyDataSource.cs
- SqlNotificationRequest.cs
- InputEventArgs.cs
- XhtmlBasicLiteralTextAdapter.cs
- CustomValidator.cs
- MutexSecurity.cs
- XmlSchemaSimpleTypeList.cs
- HtmlEncodedRawTextWriter.cs
- COM2ExtendedUITypeEditor.cs
- UserNameSecurityTokenAuthenticator.cs
- CheckBoxPopupAdapter.cs
- TreeNodeSelectionProcessor.cs
- HttpVersion.cs
- sqlnorm.cs
- Line.cs
- Decoder.cs
- LazyTextWriterCreator.cs
- PropertyDescriptorGridEntry.cs
- HtmlInputImage.cs