Hi, Ich wollte mal fragen ob jemand zufällig die letzte Version meines Tools hat?
Ich habe erstaunt festgestellt das es unter Windows10 immer noch funktioniert.
Leider habe ich das Programmieren vor über 5 Jahren aufgegeben und finde leider auch den Code nicht mehr.
Also ich habe das GC.Collect() mal spaßeshalber im Event des ersten Forms eingebaut, wenn das 2. Form geschlossen wird, dann räumt der auch anständig auf und es wird wieder über 1 GB Ram frei. Ich habe es aber wieder raus genommen. Generell sollte ich die Suchanfrage auf 10000 Ergebnisse beschränken. Kein normaler User sucht in einem iTunes Archiv mit über 20000 Titeln nach allen Songs die ein a beinhalten...
Laut dem ANTS Memory Profiler räumt er auch beim 2 Aufruf des Forms auf, wenn er dann über 1,5 GB Ram Auslastung kommt...
Nur ich dachte, der GC räumt zyklisch auf? Das scheint nicht zu passieren oder ich habe einfach nicht lange genug gewartet oder was falsch verstanden...
OK. Danke. Das Problem daran ist, dass ich ein Rahmenloses Form verwende und somit nicht über das X schließen kann. Deshalb schließe ich über this.close und einem Imagebutton. bzw. über den t_fadeout_Tick...
Wie kann ich herrausfinden ob noch Referenzen auf das Objekt vorhanden sind.
Ich programmiere eigentlich hauptsächlich asp.net Sachen und bin deshalb mit Windows Forms nicht so fit...
Ich habe eine Anwendung die Öffnet ein neues Form. Auf dem neuen Form wird mit einem Backgroundworker eine Suche durchgeführt und die Ergbnisse in ein DataTable geschrieben. Das wiederum an ein DataGridView Gebunden ist. Je nach Suchstring geht die Speicherauslastung recht hoch. Also schonmal bis zu 1 GB Speicherbedarf.
Durch klicken des Schließen Buttons wird der Backgrundworker abgebrochen und wenn er beendet wurde lasse ich das Form über this.Close schließen.
Leider bleibt der Speicherbedarf laut Task Manager bei 1 GB und geht auch nicht mehr runter. Wie kann ich das verhindern? Sollte der GC nicht bei this.Close den nicht mehr benötigten Speicher freigeben?
ich habe heute Version 1.9.0 meines Controllers fertig gestellt.
Endlich funktioniert die Auto-Lyric-Funktion wieder!!
Das ganze läuft auch noch schneller und besser als vorher.
Das update bekommt man über die interne Updatefunktion.
LG Daniel
PS: Über Feedback würde ich mich freuen.
PSS: Kann sein das noch nicht alle Fehler abgefangen sind...
So nach über einem Jahr Pause habe ich das Projekt erneut reaktiviert.
Am Controller an sich hat sich nicht viel getan...ist leider immer noch übelster Spagetti Code...
Neue Funktionen:
- Cover Suche über Amazon oder über Google.
- über Drag and Drop kann das Cover gewechselt werden
- Unbeliebte Zeichen können aus ID3 Tags entfernt werden. Hauptsächlich für Napster User Interessant um z.B. sowas schnell aus dem Tag zu nehmen [Album/Album]
- Ein paar Bugs wurden behoben
- Vorbereitungen für die neue Lyricsuche wurden getroffen. Diese sollte mit dem nächsten Update wieder gehen!
Das Programm ist über folgenden Link zu erreichen:
ich habe ein Problem...ich möchte ein bestehendes Projekt in ein anderes Projekt integrieren. Ich habe eine WinForms Anwendung geschrieben und diese möchte ich in einem anderen Projekt Verwenden.
Ist es Möglich das Projekt als DLL zu erstellen damit ich sie in meinem anderen Projekt einfach aufrufen kann?
hat sich mittlerweile erledigt. Wir haben uns auf eine Verteilung via Batch geeinigt.
Wir haben mehrere Webserver im Lastausgleich und die Kollegen wollten mir das veröffentlichen vereinfachen.
unsere Netzwerkmenschen sind auf die Idee gekommen, sämtliche Webseiten auf ein Share auf unseren Fileserver auszulagern. Die IIS wurden soweit umgebogen, dass sie auf dieses Share zugreifen. Dies hat den Vorteil, dass man Webseiten einfacher verteilen kann. Mit PHP funktioniert das ganze auch, .Net bringt natürlich ein Berechtigungsproblem.
Kann man das umgehen? Eine Domäne ist vorhanden. Wie bringt man den IIS jetzt dazu die asp.net Seiten über das Share auszuführen?
Die möglichkeit der direkten Kommunikation mit den Abonnierern. Zudem gibt es für Twitter viele Clients, sprich kann ohne Probleme über iPhone, Windows Mobile Geräten, BlackBerry etc gelesen und beantwortet werden. Das ganze frisst dann nicht soviel Bandbreite wie bei einem Blog.
Die 140 Zeichenbegrenzung ist auch nicht schlecht, so muss man sich auf das Wesentliche beschränken.
Ich teste Twitter gerade, um zu schauen ob es meinen Blog ablösen wird.
Twitter hat eigentlich nur Vorteile, wenn einige User den eigenen Tweet abonniert haben.
So nochmal danke für die Hilfe, hat ohne Probleme und mit weniger Code funktioniert.
Ich könnte mir an den Kopf fassen, dass ich die recht Simple Lösung nicht selbst gesehen habe.
Form1 hat eine Liste mit Daten aus der Datenbank. Diese haben eine Bezeichnung und eine ID. Die Bezeichnung ist der text des ListControls und die ID ist der Value.
Form2 Ist ein Fenster mit einem Tabcontrol und soll es nur einmal geben. Wenn ich jetzt in meinem ListControl einen Eintrag auswähle, werden mir in Form1 noch Details zu dem Objekt angezeigt. Bei einem Doppelklick auf das Objekt soll sich Form2 öffnen, ein neuer Tab erstellt werden (auser es ist schon einer für das Objekt vorhanden) und dann sollen Protokolldaten aus der Datenbank gelesen werden und in einem Label auf dem Tab in Form2 angezeigt werden. Damit ich in der DB das richtige Protokoll finde, benötige ich die ID aus Form1.
Wird jetzt in Form1 ein anderes Objekt in der Liste doppelt geklickt wird ein neuer Tab erstellt und dann für dieses Objekt die Protokolldaten nachgeladen.
Mit meiner Lösung klappt das ganz gut, aber wenn ich mir die Statische Klasse sparen kann, ist das besser.
Am Montag kann ich auch ein paar Screenshots posten, dann wird es vielleicht klarer.
danke ich glaube jetzt habe ich es verstanden. Also rufe ich mein Form2 mit Parameter aus Form1 auf und greife auf ein public Event aus Form2 zu, damit er die Daten aktualisiert. Habe ich das jetzt richtig verstanden?
Das OnLoad Event des Forms kann ich ja nicht nutzen, da es ja nur einmal geladen wird. Es gibt ja auch nur eine Instanz davon.
Also ich habe in Form1 eine Listbox mit Werten aus einer DB, wenn diese doppelt geklickt werden, soll sich Form 2 öffnen und in einem Tab vorhandene Protokolleinträge aus der DB anzeigen, bzw. sollen sich hinzufügen lassen.
Mein Problem war/ist, dass ich die ID des Objekts aus der Listbox benötige um die Protokolle aus der DB nachzuladen. Wichtig dabei ist, dass Form1 weiter bedienbar bleibt und durch ein Doppelklick auf ein weiteres Objekt aus der Listbox in Form2 ein weiterer Tab geöffnet wird und dort auch die entsprechenden Protokolle nachgeladen werden. Deshalb hab ich mir auch den Event geschrieben, damit Form2 selbstständig die neuen Werte laden kann und gegebenenfalls einen Tab erstellt. Das ganze soll so ähnlich aussehen wie ICQ, also vom Prinzip her.
Das 2. Form wird auch nie wirklich geschlossen, sondern nur wieder mit hide() "versteckt", damit die Daten nicht nachgeladen werden müssen. Ist eine Singleuser Anwendung.
MFG
// Statische Öffentliche Klasse um Werte ohne Instanzierung zu Übergeben
Sagt eigentlich schon alles.
Das ist eine Vorgehensweise, die niemals gemacht werden sollte.
Das wiederspricht so ziemlich jedem modernen Programmiergedanken.
Hast du einen Vorschlag wie ich es besser machen kann. Hab die Verlinkten Threads gelesen, da wird aber immer nur darauf hingewiesen das die Forms nicht abhängig von einander sein sollen und das sind sie ja schließlich nicht und kennen tun sich Form1 und 2 auch nicht.
ich habe ein kleines Problem. Ich habe eine Anwendung, bestehend aus 2 Forms und ich gebe beim Aufruf des 2. Forms (durch das erste) einen Wert über eine zusätzliche klasse mit. Das 2. Form wird einmal Global instanziert und beim schließen nur versteckt mit .hide(). Jetzt habe ich aber ein Problem, immer wenn sich der Übergebene Wert ändert, soll das 2. Form seinen inhalt neu laden. Ich habe da an ein Event in der zusätzlichen Klasse gedacht, was das 2. Form abonniert. Leider bekomme ich das nicht hin.
Hier mal den Code der zusätzlichen Klasse...
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
// Statische Öffentliche Klasse um Werte ohne Instanzierung zu Übergeben
namespace ccpStoer
{
public class uebergabe
{
private static String IDNR;
public static String _IDNR
{
set
{
IDNR = value;
}
get
{
return IDNR;
}
}
}
}
Gut wäre es jetzt, wenn ich beim set das Event feuere und das dann Form2 seinen inhalt neu läd. Hat jemand einen Tipp für mich?
Also ich glaube ich habe die Lösung gefunden, sicher bin ich mir nicht.
Ich habe wohl das Icon für das Form gelöscht und dadurch hat es wohl mein Form zerschossen.
In der Designer Datei muss ich die Controlls neu binden, dann funzt es wieder. Doof ist nur das ich sämtliche Events der Controlls auch neu binden muss.