2011-08-04 4 views
2

Je suis un débutant, mais je suis incapable de faire fonctionner ce code. FileSweeper est supposé démarrer un timmer qui déclenche fileCopy sur un serveur web. fileSweeoer est déclenché par global.asax. FileCopy va ensuite copier le fichier. Cependant, FC.copy ne se déclenche jamais. Toute aide/explication serait utile!System.Threading.Timer ne pas tirer, global.aspx

Cela ferait-il une différence s'il s'agissait d'une classe exécutée sur un serveur Web?

Mon code est de http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx.

Imports Microsoft.VisualBasic 
Imports System 
Imports System.Threading 

Public Class fileSweeper 

Dim stateTimer As Timer 

<MTAThread()> _ 
Sub Main() 
    Dim FC As New fileCopy 
    Dim tcb As TimerCallback = AddressOf FC.Copy 

    stateTimer = New Timer(tcb, "", 20000, 200000) 
    GC.KeepAlive(stateTimer) 
End Sub 

End Class

Global.asax:

<%@ Application Language="VB" %> 

<script runat="server"> 

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 

End Sub 

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs) 
    ' Code that runs on application shutdown 
End Sub 

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
    ' Code that runs when an unhandled error occurs 
End Sub 

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) 
    ' Code that runs when a new session is started 
    Dim FS As New fileSweeper 
    FS.Main() 
End Sub 

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) 
    ' Code that runs when a session ends. 
    ' Note: The Session_End event is raised only when the sessionstate mode 
    ' is set to InProc in the Web.config file. If session mode is set to StateServer 
    ' or SQLServer, the event is not raised. 
End Sub 

</script> 
+0

Où activez-vous la minuterie? –

+0

@Micheal Eakins que voulez-vous dire, pouvez-vous clarifier? THX – Sean

+0

S'agit-il d'un site Web? Si oui, avez-vous un formulaire Web? Quelque chose doit démarrer l'événement Session_Start. J'ai testé votre code et si l'événement Session_Start se déclenche, votre code fonctionne. –

Répondre

0

Vous allez probablement obtenir ici des résultats inattendus parce que vous allez probablement obtenir plusieurs sessions sur un serveur web. Vous pouvez envisager de créer une application de console et d'utiliser le planificateur de tâches Windows.