backgroundworker vs. async / await
<p>ich bin neu in der c # -entwicklung und möchte eine reaktionsschnellere benutzeroberfläche erstellen. in meinen vorläufigen untersuchungen habe ich zwei methoden gesehen, um dies zu erreichen:</p><ol> <li>multithreading in verbindung mit der backgroundworker-klasse.</li> <li>die neueren async/await-modifikatoren.</li> </ol><p>bedeutet neuer besser? was ist der unterschied zwischen den beiden methoden? wie wähle ich die methode aus, wenn ich ein neues projekt erstellen möchte?</p><p>edit: vielleicht sollte ich angeben. ich erstelle eine windows forms-anwendung, in der alle erforderlichen daten auf der lokalen festplatte gespeichert/geladen werden. ich werde auch mit mehreren usb-geräten kommunizieren.</p>
<p>sie können ihre aufgabe mit <code>backgroundworker</code> erledigen. es ist eine bekannte klasse, und viele leute haben sie benutzt.</p><p>die neuen schlüsselwörter c # 5 <code>async</code> und <code>await</code> erleichtern im grunde nur das schreiben von lesbarem asynchronem code. möglicherweise gibt es weniger tutorials und beispiele, wie verschiedene aufgaben mit diesen schlüsselwörtern ausgeführt werden können, als <code>backgroundworker</code>.</p><p>sofern sie keine ältere version von c # verwenden müssen, empfehle ich, die verwendung von <code>async</code> und <code>await</code> zu erlernen.</p>
Wenn es etwas mehr sein darf, dann finde ich "Design Thinking" oder auch "Design Sprints" sehr passend. Das ist allerdings beides nichts, was man mal eben in ein kurzes Meeting einbindet, sondern eine komplette Methodik in der es in beiden Fällen auch darauf ankommt, dass man ein möglichst interdisziplinäres Team zusammenstellt, um von den verschiedenen Sichtweisen zu partizipieren und dann in einem strukturierten Prozess zuerst einmal daran arbeitet, eine sinnvolle / lösenswerte Problemstellung zu erarbeiten. Im weiteren Verlauf werden konkrete Lösungsideen erarbeitet, ein Prototyp entwickelt, der dann an echten Kunden verprobt wird. 

Zum Start der Zusammenarbeit eines neuen Teams, bzw. beim Projekt-/Produktentwicklungsstart finde ich das super passend.

Nähere Infos dazu gibt's im Teamprove Blog: [Design Thinking](https://www.teamprove.de/blog/design-thinking-1-innovation-mit-methode?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd) oder [Design Sprint](https://www.teamprove.de/blog/design-sprint-mach-s-wie-google?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd)

Innerhalb dieser Methoden wird dann durchaus auf andere Elemente wie z.B. verschiedene Brainstorming Techniken gesetzt. Jython Compiler bietet nicht viel Optimierungs Entscheidungen. Da jedoch die Java Virtual Machine (Java) und vielleicht Compiler (javac) im Backend oder zur Laufzeit aufgerufen zu werden, sollten Sie einen Blick auf sie nehmen.


Java hat unterschiedlichen Laufzeitschalter je nach verwenden, ob Sie es als Server-Prozess starten wollen, Client-Prozess, etc. Sie können auch, wie vielen Speicher sagen zuzuteilen. <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> Du musst einfach noch ein bisschen warten, je nach der länger des Videos dauert die Verarbeitung unterschiedlich lange. Aber auf jeden Fall wird die Qualität besser. <p>c hat den vorteil, dass es eine relativ <strong> <em> kleine sprache</em> </strong> ist, was es <strong> macht ) <em> einfach einen c-compiler zu implementieren</em> </strong> (während ein c++ - compiler ein monster zum schreiben ist), und macht es <strong> = <em> leichter die sprache zu lernen</em> </strong>. siehe auch <a href="https://www.tiobe.com/tiobe-index/">tiobe-index</a> , wonach c etwas vor c++ liegt.</p><p>in (imo) abnehmender reihenfolge der rechtfertigung wird c immer noch häufig verwendet</p><ul> <li> <p>eingebettetes zeug<br> es ist viel einfacher, einen c-compiler auf eine kleine plattform zu portieren, als einen c++ - compiler zu portieren. außerdem behaupten c-befürworter, dass c++ "hinter ihrem rücken zu viel tut". allerdings imo das ist fud.</p> </li> <li> <p>systemprogrammierung<br> auch dies ist normalerweise auf die behauptung zurückzuführen, dass es einfacher ist, "zu wissen, was der compiler tut". viele eingebettete programme würden jedoch beispielsweise von vorlagen und anderen c++ - schlüsselfunktionen profitieren.</p> </li> <li> <p>quelloffene software<br> das ist jedoch meistens ein einstellungsproblem: oss hat c immer c++ vorgezogen (während es in großen teilen der branche das gegenteil ist). torvalds irrationaler hass könnte tatsächlich der wichtigste grund dafür sein <em> unter linux</em>.</p> </li> </ul> was du suchst nennt sich „block based programming“. gibts für arduino auch:

<https://learn.sparkfun.com/tutorials/alternative-arduino-interfaces/all> bei uns kommen stets die modernsten technologien zum einsatz. die meisten webanwendungen programmieren wir mit c# und javascript sowie diversen frameworks. darüber hinaus haben wir webanwendungen mit php und mit der programmiersprache typescript auf der basis von node.js entwickelt. das hosting der webanwendung kann unter windows und unter linux erfolgen. Ich rate prinzipiell von solchen Programmen ab, sie selbst sind Ursache für Probleme und können das System zerschießen. Wenn du dein PC pflegen und die Leistung behalten möchest, tu folgendes:


1. Regelmäßig installierte Programme & Apps auf Bedarf prüfen und nicht genutzte deinstallieren
2. Autostart- und Hintergrundprogramme und -apps prüfen und einschränken
3. Festplatte regelmäßig defragmentieren (bei HDD, nicht bei SSD)
4. Regelmäßig Datenträgerbereinigung durchführen (Windowseigenes Tool, das wie CCleaner & Co. nicht benötigte Daten entfernt)
5. Regelmäßig auf Malware prüfen
6. Betriebssystem und sämtliche Programme aktuell halten


Und wenn dir die Datenträgerbereinigung nicht ausreicht, empfehle ich nur ein Programm und keines zusätzlich: CCleaner


Hier jedoch den Wächter deaktiveren, das Teil braucht nicht durchgehend im Hintergrund aktiv zu laufen, gibt höchstens ein gutes Gefühl, hat aber kein Nutzen und frisst unnötig Ressourcen. Stattdessen abundan manuell ausführen. Und NICHTS an der Registry "optimieren"! Am besten einen Vergleich machen. hallo zusammen,

[bild] tobias:

dann werde ich noch manuell einen config-backup-download machen und den gleich wieder einspielen.

das funktioniert, also zumindest werden die interfaces nicht mehr durcheinander gewürfelt oder gar nicht initialisiert.

eventuell hat die opnsense ein problem unt…