Avatar billede gulbaek Nybegynder
22. juni 2004 - 17:28 Der er 12 kommentarer og
2 løsninger

Brug for lidt hjælp med at hente data fra en tråd over i en aspx

Har en klasse med en tråd som generere noget data og gemmer det i en streng, cirka 4 gange om dagen, den del virker fint. Nu vil jeg godt lave en aspx side som bruger de dataer, men hvordan gør jeg egentlig det ?

Altså hvordan kan jeg have en tråd kørende i baggrunden og så have en aspx side som hvergang der er en besøgende benytter de data'er
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 19:31 #1
Tråden kan gemme sine data i en statisk variabel som aspx'en benytter når den skal vises. Hvis tråden f.eks. vedligeholder en streng, kan du lave en statisk streng på en klasse:

static string myThreadThingy = "hello world";
Avatar billede gulbaek Nybegynder
22. juni 2004 - 19:40 #2
Okay, men hvordan sikre jeg mig at tråden blir startet op ?
Avatar billede gulbaek Nybegynder
22. juni 2004 - 19:41 #3
Tråden befinder sig inde i en klasse, hvor selve tråden blir startet op når man opretter en instans af klassen.
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 19:51 #4
Du kan starte tråden i Application_Start i din Global.asax
Avatar billede gulbaek Nybegynder
22. juni 2004 - 19:56 #5
Lige nu blir min tråd startet på følgende måde

public WeatherThread()
{
  (new Thread(new ThreadStart(getWeather))).Start();
}


Hvordan skal jeg starte den inde i Application_Start i min Global.asax hvis min codebehind fil til asp.net siden også skal have adgang til dem ?
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 20:04 #6
Lav en instans af klassen inde i Application_Start.

Når du laver din statiske variabel som tråden holder ved lige, kan du tilgå den direkte på klassen.

Lad os sige du laver strengen på en klasse der hedder MinContainerKlasse og din streng hedder "myThreadThingy". Så kan du tilgå den med MinContainerKlasse.myThreadThingy.

public class MinContainerKlasse
{
  public static string myThreadThingy = "";
}
Avatar billede gulbaek Nybegynder
22. juni 2004 - 20:43 #7
Ja ja, nu begynder det vist at hjælpe, dog er den webservice min tråd kalder begyndt at drille, nu er den begyndt at smide en System.NullReferenceException

Object reference not set to an instance of an object, det sker ikke altid men typisk når jeg starter siden op i debug måde første gang.
Avatar billede gulbaek Nybegynder
22. juni 2004 - 20:47 #8
Her er min klasse med tråden.

public class WeatherThread
{
  private static DynamicSignaturTest.net.webservicex.www.GlobalWeather weather;
  private string weatherString;
  private int start;
  private int end;
  public static string weatherCondition =" ";

public WeatherThread()
{
  (new Thread(new ThreadStart(getWeather))).Start();
}

private void getWeather()
{
  while(true)
  {
    weatherString = weather.GetWeather("aalborg","denmark");
    start =weatherString.IndexOf("<SkyConditions>") + 16;
    end = weatherString.IndexOf("</SkyConditions>") - start;
    weatherCondition = weatherString.Substring(start, end);
    Thread.Sleep(10000);
  }
}
}
}
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 21:25 #9
Du kan absolut få noget ud af hvilken linje det sker på.

Fejlen betyder at du benytter en variabel der ikke har nogen værdi. Det kan MEGET vel være din weather-variabel, jeg kan ikke se den bliver instantieret noget sted.
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 21:28 #10
Det kan i øvrigt også være at din web service simpelt hen returnerer null, så kan du jo ikke udføre dine IndexOf-operationer på den.
Avatar billede burningice Nybegynder
22. juni 2004 - 21:44 #11
private void getWeather()
{
  while(true)
  {
    if (weather != null) {
      weatherString = weather.GetWeather("aalborg","denmark");
      if (weatherString != null) {
          start =weatherString.IndexOf("<SkyConditions>") + 16;
          end = weatherString.IndexOf("</SkyConditions>") - start;
          weatherCondition = weatherString.Substring(start, end);
      } else {
            weaterCondition = "Houston, we have a problem";
      }
      Thread.Sleep(10000);
 
    }

    }
}
Avatar billede gulbaek Nybegynder
22. juni 2004 - 22:44 #12
Takker, smider i ikke begge lige et svar, og i anledning af at danmark er videre i EM i fodbold, giver jeg lidt flere point :-)
Avatar billede nielsbrinch Nybegynder
22. juni 2004 - 22:54 #13
svar
Avatar billede burningice Nybegynder
23. juni 2004 - 06:36 #14
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester