2016-05-22 5 views
1

Ich wollte die gleichzeitige Lizenzierung in meine Software implementieren, so dass nicht mehr als x Benutzer gleichzeitig angemeldet sind.C# wpf - gleichzeitige Lizenzierung Benutzer-Timeout

Jedes Mal, wenn sich ein Benutzer anmeldet, werde ich in eine SQL-Tabelle einfügen, die die aktuell laufenden Sitzungen enthält.

Ich werde prüfen, ob die Gesamtzahl über die Grenze ist, und wenn nicht, lassen Sie die Benutzeranmeldung.

Wie ich diese SQL-Tabelle loswerden Sitzungen jeden bestimmte Zeit, um zu tun bekommen zu überprüfen, haben nicht gesehen Aktivität in sagen wir 20 Minuten?

Dies berücksichtigt, dass der Benutzer keine Internetverbindung hat, da er bereits die Datenbank kontaktiert und die Sitzung entfernt hätte.

danke

Antwort

0

Ihre Bereinigungsmethode schreiben, die alten Einträge aus der Datenbank entfernt.

Erstellen Sie neue Arbeitsthread mit ThreadPool, Tasks (TPL) oder andere Technologie (z. B. HangFire). Rufen Sie Ihre Bereinigungsmethode für diesen Arbeitsthread auf.

Sie können den Worker-Thread in regelmäßigen Abständen mithilfe der Timer-Klasse oder mithilfe einer Bibliothek mit Zeitplanfunktionen neu erstellen (siehe HangFire-Projekt als Referenz).

+0

Ich werde es versuchen. Die Idee ist also, einen Job für alle x Minuten zu planen, der die Benutzerlizenz abruft und den Job in einem Backthread neu erstellt, wenn der Benutzer Aktivität zeigt? @josef – Walking