Ich habe versucht, ein Producer/Consumer-Muster in c# zu implementieren. Ich habe einen Consumer-Thread, der eine gemeinsame Warteschlange überwacht, und einen Producer-Thread, der Elemente in die gemeinsame Warteschlange stellt. Der Producer-Thread ist abonniert, um Daten zu erhalten... das heißt, es hat einen Event-Handler, und nur sitzt herum und wartet auf ein OnData-Ereignis zu feuern (die Daten werden von einer dritten Partei api gesendet). Wenn er die Daten erhält, stellt er sie in die Warteschlange, damit der Verbraucher sie verarbeiten kann.
Wenn das OnData-Ereignis im Producer ausgelöst wird, hatte ich erwartet, dass es von meinem Producer-Thread behandelt wird. Aber das scheint nicht der Fall zu sein. Das OnData-Ereignis scheint, als ob es stattdessen auf einem neuen Thread behandelt wird! Ist dies, wie .net immer funktioniert ... Ereignisse sind auf ihren eigenen Thread behandelt? Kann ich steuern, welcher Thread die Ereignisse behandelt, wenn sie ausgelöst werden? Was ist, wenn Hunderte von Ereignissen fast gleichzeitig ausgelöst werden... würde jedes seinen eigenen Thread haben?