bessere Alternative zu Timer 5 sek Select Abfrage SQL Server 2005 ExpressVersion

12/01/2010 - 19:16 von Mike Berger | Report spam
Hallo zusammen,

ich möchte gerne ein kleines Pausenprogramm schreiben.

20 User sind ungefàhr in einer Gruppe. In der Gruppe können maximal n =
4 gleichzeitig weg sein.

Nun möchte ich, dass wenn ein User auf "Pause" drückt die aktuelle Zahl
der User die in Pause sind um 1 addiert wird. Dies ist kein Problem, das
kann ich in der Datenbank ganz gut einstellen.

Jetzt soll aber, wenn diese Zahl 4 ist, allen Usern mitgeteilt werden
(über NotifiyIcon) dass zurzeit keiner mehr gehen kann.

Die Änderung des NotifiyIcons habe ich geschaft, nur was mir jetzt
gerade etwas Kopfschmerzen macht, dass der Timer alle 5 Sekunden prüft,
ob mögliche Zahl kleiner ist als n. Wenn ja, dann NotifiyIcon1 sonst
halt NotifiyIcon2.

Wenn jetzt jeder das Programm an hat und dieses alle 5 Sekunden eine
Datenbankabfrage macht kommt es zu sehr vielen Abfragen.

Kann man dies geschickter lösen?

Danke Euch
Mike
 

Lesen sie die antworten

#1 Peter Fleischer
12/01/2010 - 21:40 | Warnen spam
"Mike Berger" schrieb im Newsbeitrag
news:4b4cbc75$0$7631$

ich möchte gerne ein kleines Pausenprogramm schreiben.

20 User sind ungefàhr in einer Gruppe. In der Gruppe können maximal n = 4
gleichzeitig weg sein.

Nun möchte ich, dass wenn ein User auf "Pause" drückt die aktuelle Zahl
der User die in Pause sind um 1 addiert wird. Dies ist kein Problem, das
kann ich in der Datenbank ganz gut einstellen.

Jetzt soll aber, wenn diese Zahl 4 ist, allen Usern mitgeteilt werden
(über NotifiyIcon) dass zurzeit keiner mehr gehen kann.

Die Änderung des NotifiyIcons habe ich geschaft, nur was mir jetzt gerade
etwas Kopfschmerzen macht, dass der Timer alle 5 Sekunden prüft, ob
mögliche Zahl kleiner ist als n. Wenn ja, dann NotifiyIcon1 sonst halt
NotifiyIcon2.

Wenn jetzt jeder das Programm an hat und dieses alle 5 Sekunden eine
Datenbankabfrage macht kommt es zu sehr vielen Abfragen.

Kann man dies geschickter lösen?



Hi Mike,
ich würde das so lösen, dass jeder, der in Pause gehen will, dies anfordern
muss und dann die "Genehmigung" bekommt, wenn weniger als 4 "Pauseneintràge"
vorhanden sind. Wenn es bereits 4 Pausentràge gibt, wird ihm die Genehmigung
verweigert.

Wenn du eine aktuelle Anzeige willst, die immer die aktuelle Zahl der
"Pausengànger" anzeigt, musst du entweder ein Polling im Zeittakt ausführen,
was eine große Last bedeuten kann, oder eine zentrale Stelle einrichten, der
bei Verànderungen alle Clients informiert. Für die Information von zentraler
Stelle kannst du unterschiedliche Technologien nutzen, z.B. Sockets,
TCPListener, Remoting, MSMQ, Notification Service. Recht einfach ist auch
das Reagieren auf Verànderungen einer freigegebenen Datei, die im bei
Verànderung der "Pausengànger" durch den Datenbankserver oder auch durch den
Client veràndert wird. Besser ist bestimmt die Einrichtung von
Benachrichtigungen durch den Datenbankserver. Wie das mit dem
Datenbankserver funktioniert, musst du anhand der konkret eingesetzten
Datenbankservers klàren.

Viele Gruesse

Peter

Ähnliche fragen