Hallo zusammen,
vorab zu mir: ich bin schon etwas älter (genauer: als ich mein Studium abgeschlossen hatte, war gerade OOP als neue(!) Art zu Programmieren in aller Munde - gelernt habe ich das aber nie - wir haben problem- und maschinenorientiert programmiert - und das Internet und die Webprogrammierung standen noch in den Kinderschuhen). Habt daher bitte Verständnis, wenn ich hier Fragen stelle, die aus Eurer Sicht vielleicht zu einfach sind.
Wie kann ich Aspx-Variablen prozedurübergreifend einsetzen, deren Werte aber nur im jeweils aktuellen Browser-Tab gültig sein sollen?
Softwareentwicklung betreibe ich nebenher, es ist also nicht meine berufliche Hauptaufgabe. Bisher habe ich diverse Webtools für uns Administratoren in C# und VB entwickelt. Die funktionieren alle einwandfrei - aber nur im Single-User-Mode! Sobald jedoch mehrere User mit solch einem Tool gleichzeitig arbeiten, kommt es zu Problemen mit Variablen bzw. mit deren Werten.
In den Tools verwende ich viele prozedurübergreifende Variablen. Nun kann ich diese ja ByRef oder ByVal übergeben. Das klappt aber nicht bei Prozeduren, die auf Events reagieren (Sub XY_Changed(ByVal sender As Object, ByVal e As System.EventArgs)). Solche Variablen definiere ich mir global, entweder mit Dim oder in einer Klasse (wobei ich bei OOP nur über mangelhafte Grundkenntnisse verfüge). Das Problem ist dann, dass nach einem AutoPostBack im Code-Behind die Werte solcher Variablen auch für andere Nutzer der Tools zur Verfügung stehen, bzw. von diesen verändert werden können.
Um das Problem zu umgehen, speichere ich mir die Werte solcher Variablen nun in Session-Variablen ab. Das funktioniert dann nicht nur im Single-User-Mode, sondern auch im Multi-User-Mode. Allerdings gibt es auch hier ein Problem: die Session-Variablen gelten ja browserweit. Hat ein User ein solches Tool in mehreren Browser-Tabs geöffnet, dann gelten auch diese Session-Variablen bzw. deren Werte in all diesen Tabs.
Ich hoffe, dass mein Problem verstanden wird und mir jemand einen Lösungsweg aufzeigt. Dafür bereits im Voraus meinen Dank.
Viele Grüße
Jürgen
vorab zu mir: ich bin schon etwas älter (genauer: als ich mein Studium abgeschlossen hatte, war gerade OOP als neue(!) Art zu Programmieren in aller Munde - gelernt habe ich das aber nie - wir haben problem- und maschinenorientiert programmiert - und das Internet und die Webprogrammierung standen noch in den Kinderschuhen). Habt daher bitte Verständnis, wenn ich hier Fragen stelle, die aus Eurer Sicht vielleicht zu einfach sind.
Wie kann ich Aspx-Variablen prozedurübergreifend einsetzen, deren Werte aber nur im jeweils aktuellen Browser-Tab gültig sein sollen?
Softwareentwicklung betreibe ich nebenher, es ist also nicht meine berufliche Hauptaufgabe. Bisher habe ich diverse Webtools für uns Administratoren in C# und VB entwickelt. Die funktionieren alle einwandfrei - aber nur im Single-User-Mode! Sobald jedoch mehrere User mit solch einem Tool gleichzeitig arbeiten, kommt es zu Problemen mit Variablen bzw. mit deren Werten.
In den Tools verwende ich viele prozedurübergreifende Variablen. Nun kann ich diese ja ByRef oder ByVal übergeben. Das klappt aber nicht bei Prozeduren, die auf Events reagieren (Sub XY_Changed(ByVal sender As Object, ByVal e As System.EventArgs)). Solche Variablen definiere ich mir global, entweder mit Dim oder in einer Klasse (wobei ich bei OOP nur über mangelhafte Grundkenntnisse verfüge). Das Problem ist dann, dass nach einem AutoPostBack im Code-Behind die Werte solcher Variablen auch für andere Nutzer der Tools zur Verfügung stehen, bzw. von diesen verändert werden können.
Um das Problem zu umgehen, speichere ich mir die Werte solcher Variablen nun in Session-Variablen ab. Das funktioniert dann nicht nur im Single-User-Mode, sondern auch im Multi-User-Mode. Allerdings gibt es auch hier ein Problem: die Session-Variablen gelten ja browserweit. Hat ein User ein solches Tool in mehreren Browser-Tabs geöffnet, dann gelten auch diese Session-Variablen bzw. deren Werte in all diesen Tabs.
Ich hoffe, dass mein Problem verstanden wird und mir jemand einen Lösungsweg aufzeigt. Dafür bereits im Voraus meinen Dank.
Viele Grüße
Jürgen