【发布时间】:2010-03-13 22:20:53
【问题描述】:
我有一个小型网络应用程序,可以生成 PDF 文件作为报告。我试图在生成 10 秒后删除这些生成的 PDF 文件。我想要做的是每 10 秒读取一个包含 PDF 文件的文件夹,并删除该文件夹中的所有 PDF 文件。
我读到了这个post of Easy Background Tasks in ASP.NET。以下代码为VB版本。
Protected Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
AddTask("DoStuff", 10)
End Sub
Private Sub AddTask(ByVal name As String, ByVal seconds As Integer)
OnCacheRemove = New CacheItemRemovedCallback(CacheItemRemoved)
HttpRuntime.Cache.Insert(name, seconds, Nothing, DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, _
OnCacheRemove)
End Sub
Public Sub CacheItemRemoved(ByVal k As String, ByVal v As Object, ByVal r As CacheItemRemovedReason)
' do stuff here if it matches our taskname, like WebRequest
DeletePDFilesInFoler()
' re-add our task so it recurs
AddTask(k, Convert.ToInt32(v))
结束子
但我得到了这个错误
代表 'System.Web.Caching.CacheItemRemovedCallback' 需要一个“AddressOf”表达式或 lambda 表达式作为唯一参数 到它的构造函数。
如果这段代码有效,我应该把它放在哪里。对,现在我把它放在母版页中。如何解决这个错误?
谢谢
【问题讨论】:
-
您的 CacheItemRemovedCallback 需要一个委托(函数指针)指向它所引用的函数。不仅仅是现在的函数名称。
标签: asp.net vb.net web-services