Avatar billede mach3 Nybegynder
18. marts 2007 - 05:47 Der er 5 kommentarer og
1 løsning

En simpel event i WCF

Hej,

Er der nogen som ved, hvordan man overvåger eksempelvis en almindelig integer, og hvis den så skifter værdi, så skal der affyres en event.

Integer'en skal opdateres løbende fra en datakilde med polling mekanisme.
Avatar billede lasserasch Juniormester
18. marts 2007 - 07:29 #1
Hvorfor ikke bare lægge en timer ind, som ticker hvert 5 sek. f.eks. og tjekker om værdien på din Integer har ændret sig?

/Lasse
Avatar billede mach3 Nybegynder
18. marts 2007 - 07:56 #2
Fordi publisher/subscriber pattern'et er mere optimalt i den aktuelle situation.

For at kunne publishe noget har jeg brug for at vide, at en variabel's værdi er blevet ændret.
Avatar billede mach3 Nybegynder
18. marts 2007 - 08:17 #3
Eksempelvis har man en integer variabel:

int number;

Man starter med at tildele den værdien 0:

number  = 0;

Efterfølgende kører polling mekanismen og man skal se, om den ny værdi er forskellig fra den tidligere:

int polledValue = valueFromDataSource;
if(polledValue != number) fireEvent("numberHasChanged)


Og det er så op til event handleren at tage den videre derfra.

Er der en bedre måde at gøre det her på?

Takker.
Avatar billede mach3 Nybegynder
18. marts 2007 - 10:16 #4
Jeg har læst mig til, at jeg skal bruge nogle custom made delegates. Det vil jeg følge op på.

Kunne være rart at høre, om jeg er på rette spor :D
Avatar billede driis Nybegynder
18. marts 2007 - 11:58 #5
Du kan ikke direkte overvåge et int felt. Men du kan lave en property, som affyrer en event i dens setter. F.eks.:

class YourClass
{
  private int number = 0;
 
  public int Number
  {
    get { return number; }
    set
    {
      number = value;
      OnNumberChanged(EventArgs.Empty);
    }
  }
}

OnNumberChanged er så en metode, som fyrer eventet af. Du kan så lave en custom EventArgs klasse der kan indeholde det information, som dine event subscribers har behob for at kende. Eks:

public event EventHandler<YourNumberEventArgs> NumberChanged;

Din setter kan evt. checke for om tallet rent faktisk ændres ved operationen, etc:
if ( value != number )
  ...
Avatar billede mach3 Nybegynder
21. marts 2007 - 17:33 #6
Tak for hjælpen.

Jeg vender muligvis tilbage med relaterede spørgsmål senere :D
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