Also wir müssen uns hier auf eine korrekte Sprache einigen, denn sonst weiß keiner was wirklich gemeint ist. Beim Thema Multithreading ist das einfach unerlässlich.
Es kommt immer auf den Thread-Kontext an.
Wenn du also bei irgendetwas im Bereich Multithreading Probleme hast, dann ist es
sehr wichtig, dass du dabei den Thread-Kontext mit angibst, und nicht welche Form da was aufruft.
Auch die Methode einer Form kann in jedem beliebigen Thread-Kontext aufgerufen werden, niemand hindert dich daran. Greifst du in irgendeinem Thread-Kontext <> MainThread-Kontext auf die
VCL zu, dann
kann es rummsen - das ist ja das Gemeine, es rummst nicht immer
Den aktuellen Thread-Kontext fragt man ganz einfach mit
TThread.CurrentThread.ThreadID
ab (bei Delphi 7 war das
GetCurrentThreadID
oder so) und den MainThread-Kontext mit
MainThreadID
. Sind die beiden Werte unterschiedlich, dann ist man eben nicht im MainThread-Kontext.