2010-04-15 4 views
0

J'essaie de lire une propriété statique d'une classe statique, qui est en cours de modification à partir d'un thread différent.Lecture d'une valeur manipulée dans un thread différent

Fondamentalement, j'ai cette classe statique:

public static class Progress{ 
    public static int currentProgress{get; set;} 
} 

et ce fil manipulant le currentProgress:

private void Job(){ 
    for(int i = 0; i<100; i++){ 
     Progress.currentProgress = i; 
     Thread.Sleep(1000); 
    } 
} 

Bien que cela fonctionne, j'ai un HttpHandler d'accéder à ce cours (toutes les quelques secondes), comme ceci:

public void ProcessRequest(HttpContext context) { 
    context.Response.Write(Progress.currentProgress.toString()); 
    context.Response.End(); 
} 

Mais le currentProgress est réglé sur c'est initi alvalue ici, tandis que le workThread fonctionne, et seulement quand c'est fait, currentProgress est mis à jour. Je me rends compte qu'il s'agit probablement d'une question de synchronisation des threads - mais je n'arrive pas à trouver la manière la plus simple d'y parvenir. Aide s'il vous plaît;)

+0

Cela devrait fonctionner. Il n'est pas nécessaire de synchroniser l'accès à un int (sauf si la nouvelle valeur de l'int est calculée à partir de son ancienne valeur). –

+0

comment allez-vous accéder à httphandler, je suppose que javascript interroger l'URL avec ajax pour obtenir votre statut? ou juste le rafraîchir manuellement? – dnolan

+0

oui, en utilisant jQuery ajax pour interroger;) – Dynde

Répondre

1

La première étape consiste à déclarer que votre valeur statique est volatile.

+0

cela n'a pas semblé changer quoi que ce soit (autre que je devais changer de propriété automatique pour une propriété normale) – Dynde

Questions connexes