Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von lebes
Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

So ich geh jetzt erstmal ins Wochenende. Heute konnte ich mich leider garnicht mit dem Problem beschäftigen.

Die weiteren Vorschläge sind sicher gut und so wies ausschaut wird mir nichts weiter übrig bleiben, als die Daten zwischenzuspeichern. Was allerdings vermutlich schon zeitkritisch ist, da ich hinterher bei der Auswertung vielfach "sequentiell" die Array-Informationen brauche.

Ärgerlich ist natürlich, dass ich jetzt hier vier GB Speicher durchgeboxt habe und es nur "relativ" wenig Zusatznutzen bringt.

Da ich jetzt keine weiteren Ideen mehr erhalten habe, könnte es durchaus sein, dass es an einer prinzipiellen .net Beschränkung liegt.

Schönes Wochenende.

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das klang zunächst sehr gut. Habe es eben ausgetestet und zunächst einfach zwei Arrays deklariert, was direkt zur gleichen Fehlermeldung führte.

Dauraufhin habe ich es noch mit fünf Arrays versucht. Leider ebenfalls erfolglos. Es bleibt bei der gleichen "maximalen" Gesamtgröße.

Es liegt also scheinbar nicht daran, dass alles innerhalb eines Arrays gespeichert wird.

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das heißt soviel wie: Daran liegt es nicht, dass ich nur 1GB kriege???

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Habe nun in einem Windows XP Forum die Frage platziert. Die zwei GB Grenze existiert so und vermutlich kriege ich nur knapp über einen GB, weil es ja noch diesen Puffer gibt.

Prinzipiell sollte es auch ausreichen die Veränderungen der Boot.Ini durchzuführen um die 3GB Option zu aktivieren. Nur leider hat das hier bisher nicht zum Erfolg geführt.

Ein weiterer Hinweis dort war, dass man was an den Compileroptionen ändern müsste:
"Eine 32-bittige App kann
- unter 32bittigem Win mit /3GB Switch bis zu 3GB allozieren
- unter 64bittigem Win bis zu 4GB allozieren
wenn gleichzeitig das LARGEADDRESSAWARE Flag bei dieser App
(Linker-Switch) gesetzt ist. "

Dann war da noch die Rede, dass es auch ein wenig davon abhängt wie groß die Happen sind, die man jeweil alloziiert.

Meine Frage ist nun wie ich in Visual Studio Linker bzw. Compiler Optionen setzten kann. Vielleicht ist das ja tatsächlich momentan noch mein Problem.

Über die Variante mit der manuellen Zwischenspeicherung denke ich momentan auch ernsthaft nach (auch wenn ichs lieber vermeiden möchte). Allerdings möchte ich jetzt (wo ich schon einiges an Zeit reingesteckt habe) auch das Problem mit der 3GB Grenze gelöst kriegen.


Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Habe jetzt schon einige Male von dieser "magischen" 2 GB Grenze gelesen. Bei mir steigt das Programm (laut Task Manager) allerdings schon bei knapp über einen GB aus. 2GB würde mir auch schon sehr helfen.
Wie könnte man vorgehen um rauszufinden, warum er bei mir schon bei 1GB aussteigt? Ideen?

Werde auf jeden Fall den SysAd jetzt erstmal schreiben, dass es noch nicht funktioniert und mal sehen, ob er noch Ideen hat.

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

OK, einer der SysAds hier hat mir eben mitgeteilt, dass er die (auf den entsprechenden Links beschriebenen) Änderungen in der Boot.Ini Datei durchgeführt hat.

Habe also meinen Rechner runtergefahren, neugestartet und es nochmal ausprobiert. Leider hat sich an der Situation nichts geändert. Kriege immer noch diese OutofMemoryException.

Vermute daher, dass man zusätzlich in Visual Studio bestimmte Veränderungen durchführen muss. Irgendjemand eine Idee was ich an den SysAd weiterleiten könnte?

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank für die Infos!-)

@herbivore: Bei mir bietet mir Google ein Samsung Notebook mit 3 GB Festplatte an erster Stelle an;-) Kannst du mir evt. den genauen Link schicken?

Habe jedenfalls jetzt so ein paar Infos gefunden. Wenn ich das richtig verstehe, muss ich kleine Änderungen in der Boot.Ini Datei durchführen (wofür ich sicherlich Adminrechte brauche, oder? ). Ist es damit dann getan oder muss ich speziell in der Visual Studio Umgebung noch Einstellungen ändern?

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Weiß hier jemand wie ich die Speicherbegrenzung auf 3GB hochsetzen kann?

Was sind Memory mapped Files? Das "Monsterarray" wird im Verlauf einer Simulation gefüllt. Daher ist die Sache auch "zeitkritisch". Wenn Memory mapped Files die Daten immer wieder von der Festplatte lesen müssen, wird mir wahrscheinlich nicht geholfen sein,-)

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Habe eben die Programmausführung im Task Manager beobachtet. Beim Start des Programmes liegt die Speicherbelastung bei ca. 150MByte. Dann wird sukzessive das Array gefüllt und der Speicherbedarf steigt stetig auf ziemlich genau ein Gigabyte. Scheinbar reserviert das Programm nur genau diesen einen Gigabyte.

Wenn ich nun in der Systemleistung nachschaue, wird mir ein noch verfügbarer Speicher von fast zwei Gigabyte angezeigt.

Ist das hier eine generelle C# Beschränkung (zB wegen Garbage Collector oder ähnlichem) oder kann man die Speicherreservierung manuell erhöhen?

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke für die Infos.

Wie kann man denn die Reservierung für Anwendungprogramme auf drei Gigabyte steigern?

Gibt es eine Möglichkeit sich die aktuelle Speicherbelegung eines C# Programmes anzeigen zu lassen?

Gruß

Thema: Speicherproblem: Out of Memory
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich habe ein dreidimensinales long Array mit folgender Dimensionierung addressiert:
x = variabel
y = 47
z = 10

Hatte bis gestern 1024 MByte Arbeitsspeicher und habe damit x auf ca. 150000 setzten können. Danach kam eine Out of Memory Meldung.

Soweit so gut. Seit heute habe ich vier Gigabyte Arbeitsspeicher. Die Fehlermeldung kommt nun bei knapp über x = 200000. Das enttäuscht und verwirrt mich irgendwie. Wenn ich mit 4 Byte pro long Eintrag rechne, komme ich bei x=250000 zu einem Speicherbedarf von ca. 450 MByte. Da sollte doch bei vier Gig Arbeitsspeicher deutlich mehr drin sein. Oder hat C# interne Beschränkungen?

Gruß

Thema: Redim Preserve
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Gibt es in C# eine elegante Möglichkeit ein Array zu Redimensionieren unter Beibehaltung der bisherigen Inhalte? Quasi das, was man in VB durch:
Redim Preserve Array

erreicht.

Gruß

Thema: Achsendimension im ZedGraph festlegen
Am im Forum: Grafik und Sound

Hallo,

wie kann ich in einem ZedGraph die Achsenintervalle selbst definieren? Die Methode AxisChange funktioniert prinzipiell gut nur ist si völlig "nutzlos", wenn der Graph einige Ausreißer enthält. Man sieht dann das wesentliche leider nicht mehr.

Habe mir bisher damit geholfen, dass ich die Ausreißer gestutzt habe. Auf Dauer ist das aber eine eher unpraktische Methode.

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hab jetzt nochmal genauer gekuckt.
Du hast recht! Ich hab da einen Fehler gemacht und immer aus dem Verzeichnis obj gestartet. Dort war sie nicht drinn.

Was ist denn der Unterschied zwischen Obj und Bin?

Gruß

Thema: Versionierung
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

gibt es in VS die Möglichkeit zur Versionierung? Oder wie kann ich ein Projekt "sicherheitkopieren", um den Status Quo zu sichern und dann unbeschwert am Code herumzubasteln?

Bisher hab ich mir damit beholfen, dass ich das komplette Verzeichnis kopiert habe. Das ist natürlich eher weniger schön. Unter Datei kann ich ja immer nur einzelne Programmteile speichern und nicht das komplette Projekt.

Dank für Hinweise.

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Klingt alles sehr gut. Nur steht die lokale Kopie schon auf True. Hab sie jetzt mal auf false und wieder zurück auf true gesetzt ohne Veränderung. Keine Ahnung warum das nicht geht.

Hab im Anschluss die DLL einfach ins Startverzeichnis kopiert und jetzt funkzt!-)

Vielen Dank!

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja du hast recht. Wenn ich mir die Sache anschaue bevor ich die erste Message Box anklicke gibt es tatsächlich noch einen weiteren Prozess. Dieser verschwindet aber sobald ich die Box wegklicke.

Habe nun an der Stelle, wo die Box angezeigt wird den Debugger gestartet und tatsächlich tritt in der Zeile:


public Form1()
        {
            InitializeComponent(); <--- Fehlermeldung
        }

ein Fehler auf. Dieser wird mir allerdings außerhalb des Debug Modus nicht angezeigt. Die Fehlermeldung läßt stark vermuten, dass es was mit der ZedGraph dll zu tun hat:
System.IO.FileNotFoundException wurde nicht behandelt.
Message="Die Datei oder Assembly ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden."
Source="CrisCon_Light"
FileName="ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60"
FusionLog="=== Zustandsinformationen vor Bindung ===\r\nLOG: Benutzer = IKB\\s210991\r\nLOG: DisplayName = ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60\n (Fully-specified)\r\nLOG: Appbase = file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/\r\nLOG: Ursprünglicher PrivatePath = NULL\r\nAufruf von Assembly : CrisCon_Light, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.\r\n===\r\nLOG: Diese Bindung startet im default-Load-Kontext.\r\nLOG: Es wurde keine Anwendungskonfigurationsdatei gefunden.\r\nLOG: Die Computerkonfigurationsdatei von C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\config\\machine.config wird verwendet.\r\nLOG: Verweis nach der Richtlinie: ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph.DLL.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph/ZedGraph.DLL.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph.EXE.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph/ZedGraph.EXE.\r\n"
StackTrace:
bei CrisCon_Light.Form1.InitializeComponent()
bei CrisCon_Light.Form1..ctor() in X:\Visual C#\Projects\CrisCon_Light\CrisCon_Light\Form1.cs:Zeile 17.
bei CrisCon_Light.Program.Main() in X:\Visual C#\Projects\CrisCon_Light\CrisCon_Light\Program.cs:Zeile 34.


Anfangen kann ich damit nicht viel. Aber ich vermute, dass die Problemlösung nun nicht mehr weit ist.
Wie gesagt aus VS heraus funkzt problemlos.

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hört sich nach einer guten Idee an, aber es funktioniert nicht. Der Prozess hat den Namen: Programmname.vshost.exe und wenn ich den befehl "an Prozess anhängen" auswähle, dann kann ich diesen nicht "auswählen". Er steht zwar in der Liste, allerdings in grauer Schrift und der Typ ist "verwaltet". Alle anderen Prozesse haben hingegen den Typ x86.

Vermute mal stark, dass das was mit meinem Problem zu tun hat... nur was?

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ok hab jetzt eine zweite Message Box in die Prozedur FormLoad eingebaut. Starte ich von VS bekomme ich beide Message Boxen und danach geht dir Form auf.

Starte ich aus dem Explorer kommt nur eine Message Box. Die zweite erscheint nicht mehr und die Form geht auch net auf. Ein Prozess mit dem namen ist aber im Task Manager zu sehen.

Was kann ich jetzt noch machen, um den Fehler zu beheben?

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also der Prozess läuft im Task Manager. Hab das mit der Messagebox ausprobiert. Diese wird angezeigt. Mein Hauptprogramm sieht wie folgt aus:



static void Main()
        {
            Init();
            
            MessageBox.Show(" Dies ist ein test");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

             
            
        }

Die Messagebox kommt noch. Die Form wird dann aber nicht mehr angezeigt. Starte ich aus VS wird die Form anstandslos angezeigt.

Kann das was mit dem ZedGraph zu tun haben? Wär jetzt schon ein bisl aufwendig, den zum Testen wieder rauszunehmen. Außerdem will ich den natürlich auch behalten.

Gruß

Thema: Programm startet nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

mein Programm startet nicht, wenn ich es aus dem Explorer heraus aufrufe. Man sieht nur kurz eine Sanduhr und dann passiert nichts mehr (sowohl im Debug als auch im Release Ordner).
Heute vormittag ging es noch problemlos. Momentan kann ich es nur noch über die Visual Studio Opberfläche aufrufen. Dann geht die Form problemlos auf und das Programm funktioniert tadellos.

Seid heute morgen habe ich ein ZedGraph Control hinzugefügt und die ContextSwitchDeadlock Ausnahme ausgeschaltet.

Ideen oder Vorschläge?

Gruß

Thema: Seltsame Fehlermeldung
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank.

Versteh das Problem zwar überhaupt nicht, aber nach durchführen der Anweisung funktionierts.

Thema: Seltsame Fehlermeldung
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich kriege hier folgende seltsame Fehlermeldung:
ContextSwitchDeadlock wurde erkannt.
Message: Die CLR konnte 60 Sekunden lang keinen Übergang vom COM-Kontext 0x1b0578 zum COM-Kontext 0x1b06e8 durchführen. Der Thread, der Besitzer des Zielkontexts/-apartments ist, wartet entweder, ohne Meldungen zu verschieben, oder verarbeitet eine äußerst lang dauernde Operation, ohne Windows-Meldungen zu verschieben. Eine solche Situation beeinträchtigt in der Regel die Leistung und kann sogar dazu führen, dass die Anwendung nicht mehr reagiert oder die Speicherauslastung immer weiter zunimmt. Zur Vermeidung dieses Problems sollten alle STA-Threads (Singlethread-Apartment) primitive Typen verwenden, die beim Warten Meldungen verschieben (z.B. CoWaitForMultipleHandles), und bei lange dauernden Operationen generell Meldungen verschieben.

Meine Programmstruktur:
Zunächst öffne ich eine Form. In dieser kann man verschiedene Parameter eingeben. Durch drücken des Button Starts beginnt eine Simulation. Nach ca. 60 Sekunden bricht das Programm ab und liefert obigen Fehler. Als (Ex-)VBAer kann ich damit leider absolut garnix anfangen.

Wie kann ich diesen Fehler vermeiden? Vielen Dank für Infos.

Gruß

Thema: Graphen, Diagramme zeichnen
Am im Forum: Grafik und Sound

Hallo,

wie kann man in C# Diagramme bzw. Graphen zeichnen. Perfekt wäre eine Funktion der ein Array aus x,y-Werten übergeben wird und die dann den passenden Graphen in eine Form zeichnet.

Gibt es sowas evt. sogar als Steuerelement?

Gruß

Thema: Zugriff auf Element einer Form?
Am im Forum: GUI: Windows-Forms

Verstehe leider adhoc nicht recht was da steht. Ich will ja garnicht, dass zwei Forms miteinander kommunizieren, sondern nur auf das eine Haupform zugreifen können. Als Hauptform deklariere ich ja Oberfläche und es scheint mir ganz natürlich, dass ich über Oberfläche.xxx auf die Controls zugreifen könnte. Aber das funktioniert leider nicht. Was genau mach ich den da falsch?

Sry für meine sicher wenig qualifizierten Fragen, aber ein kurzes Codebeispiel würde mir sehr helfen.

Gruß

Thema: Zugriff auf Element einer Form?
Am im Forum: GUI: Windows-Forms

Hier nochmal vollständig mein Code:


public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void B_DatenEinlesen_Click(object sender, EventArgs e)
        {
            int cIndex;
            for (cIndex=1; cIndex≤100;cIndex++)
            PB_Fortschrittsbalken. = cIndex;  <---- hier kann ich problemlos auf das Obekt zugreifen

            

            Program.DatenLeseObject.KundenTabelleVerbinden();
            Program.Cholesky_Init();
            
        }



und hier das Programm:


static class Program
    {
        

        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Init();
            Form1 Oberfläche = new Form1();
            
            Oberfläche.  <---- hier kennt er den PB_Fortschrittsbalken leider nicht
            Form1.   <------ so kennt er in leider auch nicht
            

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(Oberfläche);

             
            
        }


Es muss doch möglich sein aus dem Hauptprogramm aus auf die Controls zuzugreifen ohne alle Controls einzeln zu übergeben.

Gruß

Thema: Zugriff auf Element einer Form?
Am im Forum: GUI: Windows-Forms

@Borg: Also ehrlich gesagt kommt in meiner Form Klasse das Objekt PB_Fortschrittsbalken garnicht vor. Ich habe es nur im Entwickler in die Form eingebaut und kann in der Form Klasse auch darauf zugreifen. Außerhalb der Form Klasse kann ich leider nicht darauf zugreifen.

@thejudge: Daran hatte ich auch schon gedacht das Controll zu übergeben, aber da ich im hauptprogramm auf eine Vielzahl von Controls zugreifen muss, müsste ich ja jedes einzeln übergeben. Das kann doch sicher nicht der einzige Weg sein.
In VB zB konnte ich eig. immer ganz problemlos von überall auf meine Controlls zugreifen.

Gruß

Thema: Zugriff auf Element einer Form?
Am im Forum: GUI: Windows-Forms

Hallo,

bin neu im Umgang mit Visual C# Forms. Habe nun eine Form entwickelt mit einem Button und einem Prograss Bar.

Will ich auf diese Objekte zugreifen, so ist das innerhalbt der Form Klasse kein Problem. Wie kann ich aber von "außen" darauf zugreifen?

Mein naiver Angang sieht so aus:



static void Main()
        {
            
            Form1 Oberfläche = new Form1();
            Oberfläche.PB_Fortschrittsbalken.Value = 5;
         }

Nur leider kennt er das Objekt PB_Fortschrittsbalken hinter Oberfläche überhaupt nicht.

Kann mir jemand schnell mal auf die Füße helfen. Danke.

Gruß

Thema: Gute C# Literatur
Am im Forum: Buchempfehlungen

Hallo,

kann mir jemand von euch ein gutes C# Buch empfehlen. Habe hier den dicken Schincken von Andreas Kühnel liegen und merke leider immer mehr, dass ich mit seinem Schreibstil nicht immer gut klarkomme.

Das Visual Basic Buch von Koffler hat mir sehr gut gefallen. Es gibt wohl auch ein C# Buch andem Koffler Teile mitgeschrieben hat. Ist das zu empfehlen?

Vielen Dank schon mal für eure Tipps.

Gruß

Sebastian

Thema: Consolen Anwendung -> Windows Anwendung
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

wie kann man aus einer begonnen Consolen Anwendung nachträglich eine Windows Anwendung machen?

Das geht doch sicher eleganter, als über den Umweg alle Klassen in eine neue Windows Anwendung zu kopieren, oder?

Vielen Dank.

Gruß