【问题标题】:Simulate Windows Service with ASP.NET使用 ASP.NET 模拟 Windows 服务
【发布时间】: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


【解决方案1】:

与其按计划删除它们,不如在每次生成 PDF 时查找旧 PDF 并删除它们?

伪代码:

/* Clean up old PDFs */
If Not StaticCleaningUpPDFsNow Then
   // No other reports generating simultaneously and trying to delete old PDFs
   StaticCleaningUpPDFsNow = True 
   For each f in (reportfolder\*.pdf)
      If f.DateCreated.AddSeconds(10) < Now Then f.Delete
   Next
   StaticCleaningUpPDFsNow = False
End If
/* Create PDF for the current report */
...

在文件夹中查找文件并删除一些文件的开销非常小,并且按需执行此操作可以更好地利用资源,而不会因缓存过期(以及可能导致的边缘情况)而受到攻击。

【讨论】:

  • 我正在接受这个建议。谢谢你。我希望它如此简单。
【解决方案2】:

错误在错误消息中,您缺少AddressOf。试试这个:

OnCacheRemove = New CacheItemRemovedCallback(AddressOf CacheItemRemoved)

【讨论】:

  • 山姆,谢谢你。没有更多的错误。但我接受了richardtallent 的建议。
猜你喜欢
  • 2010-11-16
  • 2014-09-27
  • 2013-01-31
  • 2021-10-27
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
相关资源
最近更新 更多