あなたの問題は、timScheduledTask
が関数の場所変数であるApplication_Start
ことです。この関数が終了すると、タイマーのインスタンスはガベージ コレクターによって破棄されます。タイマーをクラス変数に格納すれば問題ありません。
たとえば、次のようにします。
Public Class Foo
Private timScheduledTask As System.Timers.Timer
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
timScheduledTask = New System.Timers.Timer
timScheduledTask.Interval = 600 * 1000 //in milliseconds
timScheduledTask.Enabled = True
timScheduledTask.Start()
AddHandler timScheduledTask.Elapsed, AddressOf MyHelper
End Sub
Protected Sub MyHelper(ByVal sender As Object, ByVal e As EventArgs)
Dim ds As DataSet = obj1.Dataset()
Dim onRemoveCallback As CacheItemRemovedCallback
_cache.Insert("ResultDataset", ds, New CacheDependency("C:\AspNetSql\Quotes.Quotations"), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.[Default], onRemoveCallback)
End Sub
End Class
または、次のようにします。
Public Class Foo
Private WithEvents timScheduledTask As System.Timers.Timer
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
timScheduledTask = New System.Timers.Timer
timScheduledTask.Interval = 600 * 1000 //in milliseconds
timScheduledTask.Enabled = True
timScheduledTask.Start()
End Sub
Protected Sub MyHelper(ByVal sender As Object, ByVal e As EventArgs) Handles timScheduledTask.Elapsed
Dim ds As DataSet = obj1.Dataset()
Dim onRemoveCallback As CacheItemRemovedCallback
_cache.Insert("ResultDataset", ds, New CacheDependency("C:\AspNetSql\Quotes.Quotations"), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.[Default], onRemoveCallback)
End Sub
End Class