Wenn man mal davon absieht, dass du den DialogService im if Block zwar anlegst aber nicht zuweist, kann dein Code eigentlich auch nicht in den if Block gelangen da:
isDevice = mobile ? "Mobile" : "Desktop";
if (isDevice == "mobile")
niemals true sein wird, da die strings unterschiedlich sind. Einmal wird 'Mobile' groß geschieben und in der nächsten Zeile klein und dabei ist noch nicht einmal berücksichtig dein Umgang mit strings an dieser Stelle nicht gerade Optimal ist.
Zusätzlich kommt hinzu, dass dein DialogService nur im if Block gültig ist und sonst gibt es diesen nirgends. In C# werden Dependencies meistens über den Klassen Konstruktor als Parameter injected und in eine Klassenvariable gespeichert, dazu muss die Dependency in einem Dependency Container, wie Papst erwähnt hat, registriert werden.
Korrigiert mich, aber wäre hier ein Decorator empfehlenswert? Wirkt halt so auf mich, dass das hier durchaus Sinnvoll sein könnte bei deinen Problem @cshw89. Hier sind ein Paar Infos zu dem Design Pattern: https://www.dofactory.com/net/decorator-design-pattern
Es wird nach jedem Zwischenschritt der ein Ergebnis ausgibt gerundet.
Wenn du nach jedem Zwischenschritt rundest könnten Rundungsfehler entstehen, was das Endergebnis verfälschen könnte. Von daher würde ich tatsächlich auch erst am Ende das Ergebnis runden.
Was für eine Exception bekommst du? Stackoverflow, IndexOutOfRange? Bei deinem geposteten Code Schnippsel sollte es so auf dem ersten Blick keine Performance schwierigkeiten geben bzw. ich kann keine erkennen, wenn es nur "paar tausende" Einträge, was ansich schon sehr schwammig formuliert ist, da wäre eine genaue Zahl hilfreicher genauso wie der Fehler und Stacktrace.
Daneben stellt sich für die Frage, hast du es schon mal der Foreach Schleife probiert?
Sind Cron-tab's besser, oder sollte man diese IHostedService-Implementierung bevorzugen?
Ist denke ich ziemlich egal.
Ich würde den BackgroundService nutzen, da der auf allen Plattformen gleich läuft und nicht noch separat im OS konfiguriert werden muss.
Als egal würde ich es nicht abtuen. Über Cron Jobs hast du schon eine relativ gute Kontrolle, die man bei Backgroundservices nicht hat.
Du kannst bei einem Cron Job genau definieren, zu welcher Minute, Stunde, Tag, Monat und Wochentag dieser ausgeführt wird.
Das sind jetzt aber keine echten Bankverbindungsdaten von dir oder sonst wem oder?! Das sind sensible Informationen, die man nicht einfach in ein Forum postet vom Datenschutz mal ganz zu schweigen...
Mein erster Ansatz wäre jetzt Regular Expressions(Regex). Damit kann man schon eine Menge anstellen, was das verarbeiten von Texten/Zeichenketten angeht, damit solltest du auch die Daten aus deiner Datei bekommen.
Also ich habe auch schon oft darüber nachgedacht wie ich das bei meinen Service machen sollte. Die Idee die Sql Queries in einer txt/sql/json Datei zu hinterlegen hatte ich auch schon. Bin aber letztlich zu dem Schluss gekommen, dass das keine gute Idee ist und zwar aus dem ganz einfachen Grund, das jemand die Datei manipulieren könnte. Die Queries in der Datenbank zu speichern halte aus den selben Grund auch für eine schlechte Idee.
Außerdem sehe ich im Debugger, dass das Usercontrol als DataContext das Viewmodel des MainWindow hat und nicht sein eigenes, ich hab aber keine Ahnung, warum das so ist :-(
Hallo,
Du musst dem Usercontrol auch das entsprechende DataContext zuweisen, sonst nutzt das Usercontrol, den DataContext des übergeordneten UserControl bzw. Window.
Laut Doku braucht die Klasse ToolStripControlHost ein Control und/oder ein String im Konstruktor, einen leeren Konstruktor scheint die Klasse nicht zu unterstützten: ToolStripControlHost Klasse (System.Windows.Forms)
Zumal der Konstruktor von CheckboxStripItem auch leer ist und dementsprechend auch ein Standardkonstruktor sein sollte?
Ich habe selbst bisher noch nie Dependency Property genutzt, auch weil ich eher selten im Codebehind unterwegs bin.
Normalerweise legt man den Datacontext im Rootelement(Window oder UserControl) fest, jedoch kann für fast jedes Element, auch eigene UserControls und Views, ein DataContext festlegen wie hier:
Könnte sein das SchreibeEinstellungen überhaupt nicht aufgerufen wird oder das das Program keine Berechtigung hat in die Registry schreiben, weil sonst sehe ich da keinen Fehler.
Mit der Registry sollte man vorsichtig sein, wenn man nicht weiß was man da macht. Ich würde die Einstellungen eher in eine csv, json oder xml Datei schreiben, statt in die Registry. Daher die Frage müssen die Einstellungen wirklich in der Registry gespeichert werden?
Ich habe über Google übrigens difference-between-selecteditem-selectedvalue-and-selectedvaluepath gefunden. Dort wird der Unterschied zwischen SelectedItem, SelectedValue und SelectedValuePath erklärt. Grob gesagt gibt SelectedItem das ausgewählte Object aus deiner Collection zurück, die an deine Comboxbox gebunden ist. Während SelectedValue und SelectedValuePath angeben auf welchen Wert z.B. die ID, des ausgewählten Objects, gebunden werden soll. Kurz gesagt du sollest deine Bindings hier nochmal überdenken:
In falls keine Exception angezeigt wird, kann man das Programm auch auf dem Win7-Rechner mit dnspy starten und schauen, was dort für Fehler angezeigt werden.
Oder man schaut im eventlog bzw. ereignisanzeige nach ob dort etwas auftaucht. Dort sollte definitiv auch etwas stehen.
Ist auf dem Zielrechner überhaupt .Net installiert?
Sowas hört man gern. Trotzdem habe ich noch etwas anzumerken und zwar:
static void Main(string[] args)
{
Rechteck a = new Rechteck(10, 5);
Quadrat b = new Quadrat(5);
a.Umfang();
a.Flaeche();
b.Umfang();
b.Flaeche();
}
ist zwar in Ordnung aber hier solltest du deine Basisklasse Figur benutzen. Also statt "Rechteck a = new Rechteck(10, 5)", "Figur a = new Rechteck(10, 5)". Nachdem du Umfang und Flaeche den Rechtecks errechnet hast, kannst du a dann zu einem Quadrat machen mit "a = new Quadrat(5)". Alternativ könntest du auch mit einer Liste arbeiten.
Wenn du das gemacht hast sollte dir eigentlich ein Licht aufgehen.
Die Zeitrange ist bewusst 30 Minuten.
Bei manchen Foren ist das auch nur 5. Bei anderen 60. Bei uns aktuell 30.
Interessant, sowas kenne ich aus anderen Foren leider nicht oder ich bin Foren unterwegs wo sowas kein Thema ist. In den meisten Foren in denen ich sonst noch rein schaue, könnte ich eigene Beiträge ewig weiter editieren.
Wenn etwas grün angezeigt wird, heißt das die Variable niemals verwendet wird. Auch ist diese Variable immer etwas ausgegraut. Wenn man mit der Maus darüber fährt wird das auch entsprechend im Popup angezeigt. Siehe Bild im Anhang.
Die Lösung wäre es die Variable zu verwenden wie es Alf vorgeschlagen hat, dann wird sie auch nicht mehr grün angezeigt.
Hast du dir mal die Klasse Dictionary<Tkey, TValue> angeschaut, damit dürftest du eher ans Ziel zu kommen, weil du dann dein Tuple nicht mehr in einer Liste wrappen müsstest.
Ich denke wenn du auch schon Databinding empfiehlst sollte ich nicht mit Linq anfangen.
Was bedeuten eigentlich diese beiden Pfeile? Ich habe nachgelesen es sind Lambda Expression aber was sagen sie aus?
Mit den geposteten Linqquery kannst alle unchecked Checkbox aus dem Array herausfiltern, so dass nur noch die Checkboxen mit dem entsprechenden Index übrig bleiben, die checked sind.
Wenn dir die Lösung zu komplizierst ist, dann hat Bernd auch schon eine gepostet. Du kannst auch einfach über die Checkbox iterieren und prüfen ob eine Checkbox checked ist oder nicht nicht. Ein Objekt vom Typ Checkbox bsitzt eine boolean Variable Checked, die true oder false sein. Ist der Wert true ist die Checkbox markiert und false dann unmarkiert.
Zitat von BerndFfm
Ich würde das mit einem if machen :
CheckBox[] checkboxes = ...;
for (int i = 0; i < checkboxes.Length; i++)
if (checkboxes[i].Checked)
{
....
}
Wenn du wirklich ein Plugin System bastelen möchtest, dann solltest du dir noch mal Gedanken über dein Konzept machen. So wie das aktuell ist, kann es nur nach hinten losgehen.
Dein Plugin sollte eine Schnittstelle haben, die das Programm, welches das Plugin nutzen möchte eindeutig versteht. Das kann man Besten über ein Interface machen, das dein Plugin implementiert und dein Programm laden kann. Dann musst auch nicht mehr die Parameter herausfinden, da alles mit einer eindeutigen Schnittstelle bekannt sein sollte für beide Seiten.
Es gibt da sowas das nennt sich Debugger, damit kannst deinen Code zur laufzeit Prüfen und sehen welches Object, welchen Wert gerade hat um das einfach auszudrücken. Desweiteren bekommst du bei einer Execption auch meistens die Info in welcher Zeit der Fehler auftaucht. Vermutlich taucht der Fehler bei den Objecten auf, die du mit null initiallisierst hast, was mich ehrlich gesagt auch nicht wundern wüde.
Bist du sicher dass überhaupt eine Nullstelle berechnet wird?
So wie ich das sehe nein, bzw. er erzeugt 2 mal ein Objekt der Klasse Nullstellen. Einmal in der Methode button1_Click (Zeile 17) und dann in der Methode berechneNullstellen (Zeile 13). Dadurch ist auch kein Wunder das in Zeile 21 nichts zurück kommt, da in dieser Intanz alles 0 ist und auch nix gesetzt wurde. Er müsste eigentlich den Rückgabe Wert aus berechneNullstellen nehmen, das in Zeile 19 aufgerufen wird. Ob das dann funktioniert ist dann eine andere Frage.
Die Methode GetFileName gibt aus einem gegebenen Pfad, den Dateinamen zurück oder anders gesagt du brauchst kein Aufruf an substring. Hättest du dir den Link angeguckt wäre dir das bestimmt aufgefallen, dort gibt es sogar ein Beispiel, dafür.