sorunu

2010-11-22 21 views
0

Aşağıdaki kod, -Scheduler.vb- Zamanlanmış İşleri Çalıştırmak için ASP.NET Kullanarak Windows Hizmeti'ni simüle eder. Daha fazla bilgi burada: http://beckelman.net/post/2008/09/20/Simulate-a-Windows-Service-Using-ASPNET-to-Run-Scheduled-Jobs.aspxsorunu

Herkettek global.asax sınıfını çalıştırmayı denediğimde aşağıdaki hatayı alıyorum (RunScheduledTasks üzerinde vurgulanan): "İfade bir değer üretmiyor", neden? Teşekkürler. Bu C# VB gelen yanlış bir dönüşüm olabilir gibi

sen sağlanan bağlantıyı baktığımızda global.asax

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 
    Scheduler.Run("test", 1, RunScheduledTasks) 
End Sub 


Public Sub RunScheduledTasks() 
'Do stuff here 
end Sub 

scheduler.vb

Public Class Scheduler 
Private Class CacheItem 
    Public Name As String 
    Public Callback As Callback 
    Public Cache As Cache 
    Public LastRun As DateTime 
End Class 

Public Delegate Sub Callback() 

Private Shared _numberOfMinutes As Integer = 1 

Public Shared Sub Run(ByVal name As String, ByVal minutes As Integer, ByVal callbackMethod As Callback) 
    _numberOfMinutes = minutes 

    Dim cache As New CacheItem() 
    cache.Name = name 
    cache.Callback = callbackMethod 
    cache.Cache = HttpRuntime.Cache 
    cache.LastRun = DateTime.Now 
    AddCacheObject(cache) 
End Sub 

Private Shared Sub AddCacheObject(ByVal cache_1 As CacheItem) 
    If cache_1.Cache(cache_1.Name) Is Nothing Then 
     cache_1.Cache.Add(cache_1.Name, cache_1, Nothing, DateTime.Now.AddMinutes(_numberOfMinutes), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, _ 
     AddressOf CacheCallback) 
    End If 
End Sub 

Private Shared Sub CacheCallback(ByVal key As String, ByVal value As Object, ByVal reason As CacheItemRemovedReason) 
    Dim obj_cache As CacheItem = DirectCast(value, CacheItem) 
    If obj_cache.LastRun < DateTime.Now Then 
     If obj_cache.Callback IsNot Nothing Then 
      obj_cache.Callback.Invoke() 
     End If 
     obj_cache.LastRun = DateTime.Now 
    End If 
    AddCacheObject(obj_cache) 
End Sub 
End Class 
+0

herhangi bir yorum !!!!!!!!! takdir edilecektir – netNewbi3

+0

"RunScheduledTasks" üzerinde vurgulanmış olduğunu söylüyorsunuz. Tam olarak vurgulanan nedir? Public Sub RunScheduledTasks() '? – Justin

+0

Hata "RunScheduledTasks" durumundaysa, bize neden herşeyi kodladınız ama RunScheduledTasks'? – jason

cevap

0

görünüyor. C# kodu, hedefi Scheduler.Run'a geçmek için RunScheduledTasks ile Callback temsilcisini otomatik olarak oluşturur.

Scheduler.Run("test", 1, RunScheduledTasks) 

ve RunScheduledTasks bir Callback delegenin döndüren bir işlev olmasını bekler:

senin VB.Net kod bu hat bakıyor şüpheleniyoruz. Ne yazık ki, VB.Net'i bilmiyorum, bu yüzden burada tahmin ediyorum. Belki AddressOf operatörü (link) eklenirse o kadar gibi çalışacak:

Scheduler.Run("test", 1, AddressOf RunScheduledTasks) 
+0

Çok teşekkürler. Hata gitti. Temel soru için üzgünüm ama delegelere aşina olmadım. Tekrar teşekkürler. – netNewbi3