Hi zusammen,
ich habe zur Zeit das Problem, dass meine Anwendung ThreadLocal-Werte vorhält und der Anwendungscode hin und wieder auf diese Werte zugreift. Das funktioniert auch alles wunderbar, solange halt kein neuer Thread erstellt wird.
Nur leider lässt sich das nicht immer vermeiden und dann habe ich ein Problem!
Zur Zeit biete ich für solche Zwecke einen "TaskHelper" an, der sich darum kümmert die Werte des alten Threads in den neuen Thread zu kopieren, bevor der eigentliche Task ausgeführt wird.
Leider ist das sehr fehleranfällig, da nicht jeder diesen Code benutzt oder aber mit async/await arbeitet. Da kommt es ja auch schon mal vor, dass ein anderer Thread verwendet wird und ruck zuck bin ich wieder bei meinem Problem.
Fragen:
Gruß,
wax
Hi,
was spricht denn gegen die Implementierung eines (threadsicheren) Singletons?
LF
Hi Taipi88,
ich benötige pro Thread eigene Werte, deswegen ThreadLocal<T>.
Ich sehe da gerade keine Singleton-Situation.
Oder habe ich nur Tomaten auf den Augen?
MfG,
wax
Wie wärs mit einem Singleton der ThreadLocal im Hintergrund verwendet? ThreadLocal hat ja die Eigenschaft IsValueCreated, mit der du im Singleton dann prüfen könntest, ob es sich um einen neuen Thread handlet und ihn gleich dort initialisieren.
Lg, XXX
Ich hab's jetzt mittels CallContext.LogicalGetData() gelöst.
Implicit Async Context ("AsyncLocal") mal mehr Infos zu dem Thema.
Also bisher sieht alles gut aus, es beunruhigt mich nur etwas, dass der Code aus dem Remoting-Namespace kommt.
MfG,
wax