Werden Hintergrundarbeiter-Threads wiederverwendet?Ist thread-lokaler Speicher zwischen Hintergrundarbeiteraufrufen persistent?
Insbesondere, wenn ich einen benannten Datensteckplatz (Thread-lokalen Speicher) während der DoWork() -Methode eines Hintergrundarbeiters festlegen, bleibt der Wert dieses Datensteckplatzes erhalten, möglicherweise zu einem späteren Zeitpunkt ein anderer Thread sein ?
würde ich so nicht gedacht, aber ich habe diesen Fehler ...
EDIT: This blog post schlägt vor, dass BackGroundWorker ein ThreadPool verwendet, was bedeutet, dass Threads ist wiederverwendet. So wird die Frage; Speichern wiederverwendete Threads Thread-lokalen Speicher möglicherweise zwischen Aufrufen?
TLS nicht gelöscht, wenn der Thread-Pool zu Gewinde gibt „Wenn der Thread-Pool einen Thread wieder verwendet, ist es nicht die Daten im lokalen Thread-Speicher zu löschen oder in Felder, die mit dem ThreadStaticAttribute-Attribut gekennzeichnet sind. Wenn eine Methode lokalen Threadspeicher oder Felder untersucht, die mit dem ThreadStaticAttribute-Attribut markiert sind, können die gefundenen Werte daher von einer früheren Verwendung des Threadpoolthreads übrig bleiben. " 'QUELLE: [link] (http://msdn.microsoft.com/enus/library/system.threading.threadpool.aspx)' – Taher