Avatar billede c-sharp Nybegynder
06. januar 2007 - 17:49 Der er 13 kommentarer og
1 løsning

Lave progressbar med ICallBackEventHandler

Jeg prøver at lave en progressbar med ICallBackEventHandler, men det er gået lidt i hårdknude.

Jeg skal lave validere en masse ting og derefter kaste dem i en DB. Planen var så at jeg vil vise brugeren hvor langt processen er kommet vedhjælp af ICallBackEventHandler.

Jeg har gjort følgende:

Den funktion jeg kalder fra clientside:

public string GetCallbackResult()
    {

        // vide er hvorlangt processen er kommet
        if (vide == 0)
        {
            // her starter processen...
            start();
        }

        return (vide).ToString();

    }

Men problemet er så bare at det hele går i stå indtil start() er færdig, klart nok :-)

Så nu er mit spørgsmål hvordan løser jeg ovenstående, skal jeg ud i noget med en tråd, og hvis det er løsningen hvad så med at får statusmeldinger?

Eller er der nogen der har en bedre idé?
Avatar billede dr_chaos Nybegynder
06. januar 2007 - 17:59 #1
Du kan måske bruge en backgroundworker.
Ellers skal du ud i noget threading.
Avatar billede c-sharp Nybegynder
06. januar 2007 - 19:59 #2
Kan man bruge backgroundworker i asp.net?
Avatar billede c-sharp Nybegynder
06. januar 2007 - 21:11 #3
Nå nu har jeg leget lidt med at lave arbejdet i en tråd, men det virker desværre ikke helt som planlagt:

Jeg har lavet følgende:

  // vide er et tal mellem 1 og 100 som indikere hvor langt den er kommet
  public string GetCallbackResult()
    {

        return (vide).ToString();

    }

    // Den her bliver kaldt fra min tråd 100 gange
    private void worker_Progress()
    {
        vide += 1;
    }

Hvis jeg sætter et breakpoint i begge metoder fungere det som det skal, men sætter jeg kun et break point i GetCallbackResult() bliver vide aldrig mere end 0.

Hvad kan der være galt?
Avatar billede dr_chaos Nybegynder
07. januar 2007 - 09:43 #4
Sikkert fordi vide bliver instantieret igen når du lavet et callback fra siden.
Avatar billede c-sharp Nybegynder
07. januar 2007 - 14:31 #5
Hvad sker der i den cyklus når jeg bruger IBackEventHandler?

Bliver mine lokale variabler initialisret her gang den kalder for det ser det ret meget ud til. hvis ja hvor kan jeg så gemme min variabel, jeg har prøvet i ViewState men det virkede heller ikke :-(
Avatar billede dr_chaos Nybegynder
07. januar 2007 - 14:36 #6
De bliver initialiseret hvergang.
Viewstate kan ikke bruges. Du opdaterer kun en del af siden og ikke viewstate.
Avatar billede c-sharp Nybegynder
07. januar 2007 - 14:52 #7
er jeg så ude i at skulle bruge en session, eller er der en bedre mulighed?
Avatar billede dr_chaos Nybegynder
07. januar 2007 - 15:03 #8
Session eller cache, vil jeg mene.
Avatar billede c-sharp Nybegynder
07. januar 2007 - 15:26 #9
Hvordan kan jeg bruge cache i den forbindelse?
Avatar billede dr_chaos Nybegynder
08. januar 2007 - 08:23 #10
Cache["vide"] = vide.ToString();
int vide = Convert.ToInt32(Cache["vide"]);
Avatar billede c-sharp Nybegynder
08. januar 2007 - 08:39 #11
Bliver den gemt i memory lige som session?
Avatar billede dr_chaos Nybegynder
08. januar 2007 - 08:47 #12
Ja.
Du kan læse mere om cache vs session på denne google søgning:
http://www.google.dk/search?client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&channel=s&hl=da&q=asp.net+cache+vs+session&meta=&btnG=Google-s%C3%B8gning
Du skal bare give Cache["vide"] et unikt id.
F.eks. et sessionid:
Cache[this.SessionID+"vide"] = vide.ToString();
(pseudo kode :) )
Avatar billede c-sharp Nybegynder
09. januar 2007 - 20:44 #13
Endnu engang mange tak for hjælpen, smid et svar så er der point..
Avatar billede dr_chaos Nybegynder
10. januar 2007 - 06:24 #14
svar og np :)
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