Mega Code Archive

 
Categories / ASP.Net Tutorial / Cache
 

Creating an RssCacheDependency class (VB)

<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>Custom Cache Dependency Example</title> </head> <body>     <form id="Form1" runat="server"> RSS URL:        <asp:TextBox ID="TextBox1" Runat="server"/>        <asp:Button ID="Button1" onclick="Button1_Click" Runat="server"          Text="Get RSS" />         Cached:<asp:Label ID="Label2" Runat="server"></asp:Label><br />         RSS:<br />         <asp:TextBox ID="TextBox2" Runat="server" TextMode="MultiLine"          Width="800px" Height="300px"></asp:TextBox>     </form> </body> </html> <script runat="server">     Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)         Dim RSSUrl As String = TextBox1.Text         Label2.Text = "Loaded From Cache"         If Cache(TextBox1.Text) Is Nothing Then             Label2.Text = "Loaded Fresh"             Dim itDepends As New RssCacheDependency(RSSUrl, 600)             Cache.Insert(RSSUrl, itDepends.Document, itDepends)         End If         TextBox2.Text = CType(Cache(TextBox1.Text), _              System.Xml.XmlDocument).OuterXml     End Sub </script> File: App_Code\RssCacheDependency.vb Imports System Imports System.Web Imports System.Threading Imports System.Web.Caching Imports System.Xml Public Class RssCacheDependency     Inherits CacheDependency     Shared backgroundThread As Timer     Dim howOften As Integer = 900     Dim RSS As XmlDocument     Dim RSSUrl As String     Public Sub New(ByVal URL As String, ByVal polling As Integer)         howOften = polling         RSSUrl = URL         RSS = RetrieveRSS(RSSUrl)         If backgroundThread Is Nothing Then             backgroundThread = New Timer( _                 New TimerCallback(AddressOf CheckDependencyCallback), _                 Me, (howOften * 1000), (howOften * 1000))         End If     End Sub     Function RetrieveRSS(ByVal URL As String) As XmlDocument         Dim retVal As New XmlDocument         retVal.Load(URL)         Return retVal     End Function     Public Sub CheckDependencyCallback(ByVal Sender As Object)         Dim CacheDepends As RssCacheDependency = _             CType(Sender, RssCacheDependency)         Dim NewRSS As XmlDocument = RetrieveRSS(RSSUrl)         If Not NewRSS.OuterXml = RSS.OuterXml Then             CacheDepends.NotifyDependencyChanged(CacheDepends, EventArgs.Empty)         End If     End Sub     Protected Overrides Sub DependencyDispose()         backgroundThread = Nothing         MyBase.DependencyDispose()     End Sub     Public ReadOnly Property Document() As XmlDocument         Get             Return RSS         End Get     End Property End Class