for-schleife Prozessorauslastung

Der Schreibzugriff auf GUI-Elemente ist in der Tat ein ausbremsender Faktor, da jedesmal das Fenster neu gezeichnet werden wird. Der zweite Faktor ist die Zugriffs-Synchronisation, wenn mehrere Threads versuchen wollen, gleichzeitig auf ein Element zuzugreifen. Lesens sollte das in den meisten Fällen kein Problem sein, doch wenn schreibend Änderungen vorgenommen werden sollen, können Informationen verloren gehen. (Gut, bei Zufallswerten macht das eh nichts aus) Um diese Schreib-Konflikte zu beheben, können mehrere Techniken benutzt werden: Entweder sowas wie Transactions, alle dürfen nur den gleichen Wert schreiben oder z.B. nacheinander. usw.
 
Das Problem ist nicht, dass sich hier die Threads in die Quere kommen, sondern dass es (zumindest in VB.NET, in C# wird es aber dasselbe sein) das .NET Framework gar nicht erlaubt. Lesend zugreifen darf man, wie man will, aber sobald man auf ein GUI Element in einem Thread schreibend zugreifen will, bekommt man eine Exception, dass das Element nur in dem Thread verändert werden darf, indem es erstellt wurde. Ich löse das immer so, dass ich gleich nur globale Variablen ändere, die synchronisiert sind (z.B. eine Queue für die Ausgabe) und diese dann in einem Timer, der alle 100ms augerufen wird, aktualisiere. Damit habe ich nicht nur das Problem mit den Threads gelöst, sondern es ist bei vielen Ausgaben wesentlich schneller. Wenn man z.B. an eine Textbox 1K Mal pro Sekunde 1 Zeile anfügt, so braucht das mit der Zeit ewig, wenn schon 100K Zeilen da sind. Wenn man die 1K Zeilen jedoch zu einem String zusammenstoppelt, was relativ schnell geht und den als Ganzes anfügt, so geht das wesentlich schneller.
 
Noch steht doch gar nicht fest, dass GUI-Elemente angesteuert werden müssen...
bei einer langen Schleife kommt das meiner Erfahrung nach doch eher etwas seltener vor...

aber der Witz mit der Windows-Lizenz war genial... nimm doch einen Browser wie Firefox und Opera, oder nimm Linux und lade es dir da runter. Da wird gar nichts überprüft. Wenn das rauskäme, dass da die Windows-Lizenz überprüft würde, hätten die mehr Datenschutz-Klagen am Hals, als es illegale Windows-Lizenzen auf der Welt gibt...

Edit: Beim Windows Update findet dagegen tatsächlich ein WGA-Check statt, und mein Vista wollte auch mal nicht korrekt erkannt werden - hab mich an den MS Support gewendet damals...
 
Zuletzt bearbeitet:
1.) Ich tippe wie gesagt auf GUI Elemente, aber wenn wir den Code haben, dann kann ich das durch den Profiler jagen und dann wissen wir es gewiss.

2.) Es gibt zwei Stellen, so die Windows Version geprüft wird:
a) Die eine ist möglicherweise bei automatischen Updates
b) die andere ist bei einigen Downloads, die eine Überprüfung erfodern. Das gilt für Windows, als auch für Office. Wenn man sich z.B. einen Outlook Spamfilter herunter laden will, dann wird geprüft, ob Office legal ist. Hierbei wird jedoch nur geprüft, ob ein illegaler Key vorhanden ist. Man kann z.B. mit Windows 98 Updates für Vista herunterladen z.B. mit einem Rechner ohne Office die Updates für Office. Es sollen nur illeagale Versionen gesperrt werden.

Sowohl bei Automatischen Updates, als auch beim Download wird nur höchstens der Download verweigert, aber es wird nichts gesperrt. Es gibt auch keine Listen, wo alle IPs mit illegalen Versionen aufgeschrieben werden, weil da würde MS zu sonst nichts mehr kommen. Die machen ihr Geld immer noch mit dem Verkauf von Software und nicht wie manche andere Branchen mit dem Verklagen von Leuten.

Es gibt jedoch ein Update, das automatisch installiert wird. Das heißt Windows Genuine irgendwas. Das wird über automatische Updates bezogen und wenn man keine legale Version hat, dann kommt immer beim Starten ein Fenster und man hat ein Symbol im System Tray. Dabei wird man darauf aufmerksam gemacht, dass man möglicherweise eine gefälschte Version hat und man MS melden soll, wo man die her hat (falls sie aus dem Handel ist). Weiters hat man noch einen Link, wo man eine Original Lizenz erwerben kann und einen neuen Key eintragen kann, damit es legal wird.
Das Tool ist zwar nervend und lässt sich nicht mehr deinstallieren (zumindest weiß ich nicht wie), aber wirklich sabotieren tut es auch nichts.
 
Zurück
Oben