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 cmpxchg
Thema: Verbindungsprobleme zu MSSQL
Am im Forum: Datentechnologien

Hallo, ich habe einen Server programmiert, der auf eine MSSQL Datenbank zugreift.
Einen Tag läuft es aber irgendwann am Morgen (ca. 4 Uhr) wird die Verbindung getrennt. Ich kann sie dann nicht mehr öffnen. Warum? Was kann ich da machen?
Ich bin für jede Hilfe dankbar.

Hier ist der Code zum öffnen einer Verbindung. Immer, wenn die Verbindung geschlossen ist, versuche ich hiermit die Verbindung wieder zu öffnen. Ich verwende server1 als Hostname, sa als Username und kein Passwort. Schlägt der Verbindungsversuch fehl, so warte ich erst 10s dann 30s dann 60s. (Ich dachte das könnte helfen) aber leider tut es dies nicht. Was kann ich da machen?

Ich bin für jede Hilfe dankbar.


		public override bool Open()
		{
			try
			{
				
				lock(OPENLOCK)
				{
					if(realOpen() == true) return true;
					int sec;
				
					sec = 10;
					Console.WriteLine("Delaying reconnect for "+sec+" seconds");
					Thread.Sleep(sec*1000);
					if(realOpen() == true) return true;

					sec = 30;
					Console.WriteLine("Delaying reconnect for "+sec+" seconds");
					Thread.Sleep(sec*1000);
					if(realOpen() == true) return true;

					sec = 60;
					Console.WriteLine("Delaying reconnect for "+sec+" seconds");
					Thread.Sleep(sec*1000);
					if(realOpen() == true) return true;
					return false;
				}
			}
			catch(Exception ex)
			{
				this.sqlLiteDB.logError("Can't connect to SqlServerDatabase. Exception follows","SqlServerConnection.Open()");
				this.sqlLiteDB.logException(ex);
				return false;
			}
		}
		private bool realOpen()
		{
			try
			{
				string connectionString = "Server="+this.hostname+";";
				connectionString+= "Database="+this.database+";";
				connectionString+= "User ID="+this.username+";";
				if(!(this.password == null || this.password == ""))
				{
					connectionString+= "Password="+this.password+";";
				}				
				
				this.conn = new SqlConnection();
				this.conn.ConnectionString = connectionString;
				if(Globals.DEBUG) Console.Out.WriteLine(connectionString);
				this.conn.Open();
				
				return true;
			}
			catch(Exception ex)
			{
				this.sqlLiteDB.logError("Can't connect to SqlServerDatabase. Exception follows","SqlServerConnection.Open()");
				this.sqlLiteDB.logException(ex);
				return false;
			}
		}

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

Freilich beenden die. Die meisten aufrufe resultieren sofort in ein return

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

zuviele bedeutet ca. 30000 Instanzen, aber es werden immer mehr

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

Hallo,
ich habe folgendes Problem: Ich habe mit einem Memory Profiler festgestellt, dass mein Programm zu viele Threads im Speicher hält.

Prinzipiell starte ich die Thread auf 2 Weisen:


...
public void start()
{
Thread thread = new Thread(new ThreadStart(this.machewas));
thread.Start();
return;  // Hier das return, damit der GC den Thread irgendwann wieder vom Speicher entfernt
}
...

oder so:


...
public void start2()
{
ThreadPool.QueueUserWorkItem(new WaitCallBack(this.machewasandres));
return;
}


Im ersten Fall habe ich dann zu viele Instanzen von class Thread im Speicher und im zweiten Fall zuviele instanzen von WaitCallBack

Zu Testzwecken starte ich alle 500ms einen neuen Thread, der Speicher ist dann in kürzester Zeit voll.

Was kann ich da tun um die Klassen vom Arbeitsspeicher zu entfernen? Ich bin für jede Hilfe dankbar

Danke

Thema: komisches mit timer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Überlauf?

Es gibt auch keine Exception (nur so zur anmerkung)

Thema: komisches mit timer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Es ist ohne GUI.

Ja, das Programm hat ca. 1 Woche laufzeit, also keine Neuübersetzung e.t.c.
Eine Woche ununterbrochene Laufzeit.

Es handelt sich um einen Server, der Periodisch Backups macht

---

zu dem windows.Forms.Timer: Warum sollte der Günstiger sein?

Thema: komisches mit timer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich verwende in meinem Projekt den System.Timer.Timer. Ich hab da ein Intervall gesetzt, so 20ms, und lasse ihn laufen. Das Elapsed-Ereignis wird immer brav ausgelöst.

Warum aber wird das Elapsed-Ereignis plötzlich bei mir nicht mehr ausgelöst? Ich verwende kein Stop() und setze auch nirgends Enabled auf false.
So eine Woche lang funktioniert alles wunderbar und dann irgendwann kommen die Ereignisse nicht mehr.

Was kann denn das sein?

Ich bin über jeden Ratschlag dankbar

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

Hallo,

ich hab ein Multicast-Delegate für ein Ereignis programmiert. Andere Objekte verwenden dieses Ereignis. Doch jetzt möchte ich jede Methode, die dieses Ereignis empfangen will, in einem eigenen thread starten.
(So ähnlich wie der System.Timer.Timer. Der startet auch immer das Elapsed-Ereignis in einem Thread)

Wie kann ich denn jede, in dem delegate registrierte Methode, in einem separaten Thread laufen lassen?

Danke

Thema: RAM mitzählen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich suche doch den kostenlosen von Microsoft.

Thema: RAM mitzählen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wo finde ich den Memory Profiler für .NET?

Thema: RAM mitzählen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich brauche es zur Fehlersuche: Mein Serverprogramm verbraucht 1,2GB RAM.
Doch warum?
Bevor ich da vermutungen anstelle, will ich erstmal testen, ob dieser wert realistisch ist, weil er wirklich belegt wird, oder ob nur der GC den Speicher nicht freigibt.
Ausserdem will ich damit feststellen, welche Teile wie viel Speicher belegen und somit die Speicherauslastung optimieren.

Thema: RAM mitzählen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
gibt es eine möglichkeit den Speicherverbrauch von objekten zu bestimmen?

Im konkreten fall hab ich eine ArrayList, die gefüllt ist mit Strukturen.
Ich will also den Speicher, den die ArrayList für die Verwaltung braucht und die Summe des Speichers, die jede Struktur belegt.

Danke im Voraus für die Hilfe

Thema: c# und Thunderbird
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sowas hab ich mich auch schon oft gefragt. Ich denke da musst du die Thunderbird Entwickler direkt ansprechen, also in den richtigen Foren fragen. Da wissen sie soetwas.

Wenn dus rausgefunden hast, so sage mir bitte auch bescheit, ich will es auch wissen

danke

Thema: Exception?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Die Exception ist nicht Reproduzierbar, ich hab zum Glück eine Zweite Exception, die bei DateTime.Subtract nicht gefangen wurde. Vielleicht finde ich darüber den Grund.

Wer kann mir denn tips geben, so eine Exception zu finden?

In dem Programm sind noch 2 seltsame sachen:

1. Einer meiner Timer, löst keine Ereignisse mehr aus, obwohl Enabled = true ist. Ich muss nocheinmal Start() aufrufen, wenn das Programm eine TCP-Verbindung annimmt

2. Ich hatte eine Meldung, dass das Programm eine Resourcendatei nicht laden kann, obwohl ich keine GUI verwende (also nichtmal System.Windows.Forms referenziere)

Weis jemand, in welchem Zusammenhang das ganze Stehen könnte?

danke

Thema: Exception?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Tja eben das ist es ja....

Ich bin gerade dabei die Exception zu Reproduzieren und den Code der Stelle suche ich gerade.

Sollte ich lieber die Runtime Version 1.1 verwenden?

Thema: Exception?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo ich hab eine Exception, kann mir jemand helfen, was ich da zun soll?
Aus den ganzen daten folgere ich, dass diese Exception auftritt, wenn ich Zwei DateTime-Werte voneinander Subtrahiere. Die Informationen folgen unten:


TargetSite: System.DateTime op_Subtraction(System.DateTime, System.TimeSpan)

source: mscorlib

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Type: System.AccessViolationException

StackTrace: at System.DateTime.op_Subtraction(DateTime d, TimeSpan t) at System.CurrentSystemTimeZone.GetUtcOffsetFromUniversalTime(DateTime time, Boolean& isAmbiguousLocalDst) at System.CurrentSystemTimeZone.ToLocalTime(DateTime time) at System.DateTime.ToLocalTime() at System.DateTime.FromFileTime(Int64 fileTime) at System.Timers.ElapsedEventArgs..ctor(Int32 low, Int32 high) at System.Timers.Timer.MyTimerCallback(Object state) at System.Threading._TimerCallback.TimerCallback_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._TimerCallback.PerformTimerCallback(Object state)



P.S. Ich werde nur sicheren verwalteten code und das Programm wurde mit 1.1 geschrieben (verwendet aber die 2.0 runtime). Also laut msdn darf ich diese Exception nicht erhalten

Thema: Dienst mit GUI
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich habe mit c# einen Dienst programmiert, ich will aber jetzt, dass er beim Start eine MessageBox oder eine Form anzeigt, wenn ein Fehler aufgetreten ist.

Wie funktioniert das? Geht das überhaupt?

Danke

Thema: Ein Thread vershwindet unergründlich
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Probiere doch mal soetwas in deiner Main-Methode:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

und dann in der Event-Methode:


private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
{
	Exception ex = e.ExceptionObject as Exception;
        if(ex != null) Console.WriteLine(ex.ToString());
}

Dann bekommst du garantiert jede Exception zu gesicht. Vorallem bei Threads ist dies sehr Praktisch

Thema: Gui baut sich zu langsam auf
Am im Forum: GUI: Windows-Forms

Hallo,
wie kann in in c# die GUI schneller aufbauen lassen?
Wenn ich eine Form mit vielen controls öffne, kann ich sehen, wie sie nacheinander erscheinen (das geht aber sehr schnell). Ausserdem habe ich so flicker-Effekte beim Resizing.

Wie kann ich dies Verbessern? Ich hab mal bei der Form DoubleBufferer auf true gesetzt, aber keine Verbesserung.

2. Habe ich einen Algorithmus, der umständerhalber einen Button auf Enabled, dann auf Disabled (Enables = false), dann wieder auf Enabled setzt. Dies erzeugt auch einen flickereffekt, obwohl ich davon ausging, dass die Form nicht neu gezeichnet wird (weil diese 3 zuweisungen innerhalb einer Methode passieren)

Was kann ich da machen um dies zu Verbessern? Danke

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

Hallo,

warum ist die Parse-Methode in einem enum unsichtbar? Also:


public enum ABC
{
a,b,c,d,e
}

void do()
{
  string name = "b";
  ABC abc = (ABC) ABC.Parse(typeof(ABC),name);

  abc == ABC.b;
}

Kann ich die in Visual Studio auch irgendwie sichtbar machen? Hat ein enum noch mehr für IntelliSense unsichtbare Methoden?

danke

Thema: iteration über enum
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

danke

Thema: iteration über enum
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo ich habe folgenden Code:



public enum Buchstaben
{
 a, b, c, d, e
}


ich kann auch darüber iterieren:


for(Buchstaben b = (Buchstaben) 0; b < (Buchstaben) 5; b++)
{
...
}

// oder mit
for(Buchstaben b = Buchstaben.a; b ≤ Buchstaben.e; b++)
{
...
}

aber wie geht es am elegantesten?

Danke

Thema: Ein Objekt Global deklarieren? Geht das?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das ist ganz leicht, daher erkläre ich es an einem Beispiel:


public class Global
{
   public static int eineZahl = 10;
   public static void macheWas()
   {
   }
}

// in .NET 2.0 gehts auch so:
public static class Global
{
  // wie oben...
}

Also du brauchst das Schlüsselwort static
Zugreifen kannst du dann von überall aus mit Global.macheWas() oder mit Global.eineZahl = 5;

P.S. Das ist das Singleton entwurfsmuster

Thema: Erfahrungen mit CanOpen ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Was macht denn CanOpen?

Thema: System.Guid auf DBNull setzen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du wist doch eine Sql-Anweisung bauen.
Warum lässt du die Guid nicht einfach weg, wenn in dem dataSet Guid.empty gespeichert ist?

Thema: Falsche Verteilung / console.writeln Bug?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Verwende doch mal einen konstanten Seed-Wert. Dann ist die Zufallsfolge reproduzierbar.

Du solltest wicklich nicht jedesmal ein neues Random-Objekt instanziieren, weil du dann immer einen neuen Seed-Wert nimmst. Der genaue Wert ist unbekannt und wenn .NET intern seinen Seed-Wert aus der Uhrzeit ableitet, kann es sein, dass du immer den gleichen verwendest.
Naja, und 2 gleiche Seed-Werte bewirken, dass das Random.Next immer gleiche Werte ausspuckt.

Das console.WriteLine ist sau langsam, da vergeht viel Zeit -> neuer SeedWert.
Ohne console.WriteLine vergeht wenig Zeit -> gleicher Seed wert und Zufall ist futsch

Thema: .NET 2.0 und 1.1
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,
ich habe ein Programm mit .NET 1.1 entwickelt. Kann ich dafür .NET 1.1 erzwingen, wenn auf dem Rechner .NET 2.0 installiert ist?

Thema: Etwas sehr komisches mit einem Timer und Windows 2003
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo, ich erlebe gerade einen seltsamen effekt:

Ich hab einen Timer, der alle 30s eine datei überprüft.
Parallel dazu verwaltet das Programm TCP-Verbindungen.

Unter Windows XP funtioniert alle einwandfrei aber unter Windows 2003:
Der Timer funtioniert, bis ich eine TCP-Verbindung aufgebaut habe. ab da löst der Timer keinen Elapsed-Ereignis mehr aus. (Es ist der System.Timers.Timer). Dieses verhalten ist aber nur im Release-Modus und nur unter Win2003. Im Debug-Modus funktioniert alles wunderbar.

Hat jemand schonmal soetwas erlebt?
Kann mit jemand einen Hinweis geben, was ich da machen könnte?

P.S: .NET Version 1.1

Thema: Timer müllt Speicher zu
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von FZelle
Du erzeugst Ständig neue Objekte, die erst "weggeräumt" werden, wenn der GC
anfängt Aufzuräumen.

Das passiert aber erst, wenn Windows sagt das der Speicher eng wird.

Wo erzeugt er denn objekte?

Thema: Threading + GUI Problem
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Greift du denn in einem solchen System.Timer.Timer-Thread auf einige Controls deiner GUI zu? Wenn ja, das musst du schleunigst vermeiden