Salve,
so che è un argomento già trattato diverse volte, ma leggendo gli altri thread non sono risucito a venirne a capo.
In questa classe presa da Aspitalia per effettuare le operazioni pianificate tramite asp.net ho messo una classe creata da me:
Però se controllo la variabile Application["debug"] dopo l'esecuzione pianificata ottengo l'errorecodice:using System; using System.Timers; using System.Web; using MyStats; public class MyGlobal:HttpApplication { private Timer OpTimer; //orario stabilito della prima operazione //e per le successive (calcolato automaticamente) public static DateTime When; //riesegui ogni n ore public static byte Every; public MyGlobal():base() { //orario stabilito della prima operazione //non indicare la data in previsione di futuri riavvi di iis When=DateTime.Parse("22:53"); //riesegui ogni n ore Every=24; StartTimer(); } public void OnTimedEvent(object source, ElapsedEventArgs e) { //Richiamo classe da me creata try { Stats hit=new Stats(); hit.Analyze(); Application["debug"]="ok"; } catch (System.Exception ex){ Application["debug"]=ex; } //riimposto il timer per portarlo avanti di n ore When=When.AddHours(Every); //riprendo l'intervallo cos prendo in considerazione il tempo di elaborazione passato //con il tempo potrebbe sballare OpTimer.Interval=GetInterval(); OpTimer.Start(); } private double GetInterval() { TimeSpan diff=When.Subtract(DateTime.Now); //risultato in millisecondi return diff.Ticks / 10000; } private void StartTimer() { //se l'ora in cui deve partire è più piccola di oggi (visto che la parserizza con la data odierna) //lo portiamo alla prossima esecuzione if (When<DateTime.Now) { //aumento la data dell'operazione dell'intervallo dato //fino a quando è maggiorne dell'ora odierna while (When<=DateTime.Now){ When=When.AddHours(Every); } } OpTimer=new Timer(GetInterval()); OpTimer.AutoReset=false; OpTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent); OpTimer.Enabled=true; } }
System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto. at MyStats.Stats.Analyze() at MyGlobal.OnTimedEvent(Object source, ElapsedEventArgs e)
Io lavoro prevalentemente in vb.net e non utilizzo VS.net.
Mi sapete dire come devo istanziare la chiamata alla classe da me creata?
Grazie

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando