peter999
21 Posts
wrote on 08.04.12 at 13:46
Link to this post
Hallo,
mir fällt auf, dass im Falle eines Verbindungsfehlers zu einem Stream es nur die Möglichkeit gibt, maximal 9 Sekunden auf eine Wiederverbindung zu warten.
Da ich bei mir auf Dauerversuch (Wert = 0) eingestellt habe, rumpelt es im 9 Sekundentakt.
(Einstellungen->Erweitert->Verbindungsversuche (0))
(Einstellungen->Erweitert->Zeit zwischen Wiederholung(9))

Wäre es hier nicht möglich, das Ganze auf 3 Stellen zu öffnen. Es reicht dann, z.B. 120 Sekunden vorzugeben, dann ist das Programm nicht permanent am pollen…

Gruß
Peter

P.S. So langsam komme ich hinter die Logik des Programms, noch kämpfe ich mit solchen Dingen wie dem Schnitt (da habe ich von einer AAC Datei den Anfang eines Stückes, das sich noch in das aktuelle Stück hereingemogelt hatte, vom Ende des aktuellen Stücks zu kappen, das hat dann geklappt (Danke für die Wiki), aber beim Zurückspeichern kam eine Fehlermeldung, dass ein Fehler aufgetreten wäre beim Recode. Die Datei habe ich aber dann gefunden und sie war einwandfrei, allerdings wurde die Originaldatei nicht überschrieben….

Aber wenn es so weiter geht, gibt's in Kürze eine Spende…
 
peter999
21 Posts
wrote on 08.04.12 at 13:48 last edited by peter999 on 08.04.12 at 15:19
Link to this post
Was man nicht im Kopf hat…

oder gibt es eine Möglichkeit, das direkt in die Konfigurationsdatei (oder Registry) einzutragen, ohne dass dann das Programm kollabiert ?

in der ini:
MaxRetries=100
RetryDelay=5

umstellen auf:
MaxRetries=0
RetryDelay=120

nochmal Gruß aus Franken
Peter
 
alex
2549 Posts
wrote on 10.04.12 at 23:41 last edited by alex on 10.04.12 at 23:43
Link to this post
Hi,

du kannst es in Registry/Ini umstellen, aber streamWriter merkt, dass du ihm umgehen möchtest und setzt es dann auf 9, wenn der Wert zu hoch ist. Dahinter steht eine kleine hässliche Sache, die ich spaßeshalber mal detailliere:
Während auf den Retry gewartet wird, befindet sich der Thread, der aufnimmt, in einem Sleep(). Um einen Stream aus der Liste im Hauptfenster zu entfernen, muss der Thread tot sein. Er schläft dann aber, ist nicht Tot, und kann nicht einfach entfernt werden. Wenn ich höhere Werte zulassen würde, kommt hier bestimmt die Frage auf: "Der Stream ist auf 'Warte…' und ich will ihn entfernen. Das geht aber nicht!"
Ich muss das mit dem Sleep() mal wegmachen und einen schöneren Mechanismus einbauen. An der Stelle steht im Quelltext übrigens: "Das hier ist Mist".

Edit: Gerade mal nachgeschaut, man kann ihn umgehen, aber mehr als 10 geht nicht:-D… bringt also nicht wirklich viel.
LG/Best regards, Alex

"Journalism is printing what someone else does not want printed. Everything else is public relations."
- George Orwell

D1734FA178BF7D5AE50CB1AD54442494
 
peter999
21 Posts
wrote on 13.04.12 at 10:02
Link to this post
Hallo Alex,
danke für die Info. Über die Windows API lassen sich threads problemlos steuern, ich löse solche Dinge, indem ich die sleeps in kleine Häppchen verteile (z.B. 100mS) aber darum herum eine Schleife laufen lasse, die ein Stop-Event abprüft. Damit blockiert der Sleep nicht die gesamte Zeit, sondern kann im Abstand von 100mS (bei meinem Beispiel) von außen beendet werden, z.B. durch das Event -> Click auf Beenden des Streams…
Da ich in Cpp/QT programmiere, kann ich hier kein Delphibeispiel anführen..

So bollert halt der Verbindungsaufbau vor sich hin, es ist ja meist so, dass die Streams mehrere Stunden weg sind, bevor sie wieder funktionieren…

schönen Gruß aus Franken
Peter
 
alex
2549 Posts
wrote on 13.04.12 at 01:15
Link to this post
Hi!

Mit so einer Antwort hätte ich ja nicht gerechnet. Ich bin mehr aus Spass so weit ins Detail gegangen:-)
Wie dem auch sei: deinen Vorschlag hatte ich so sogar an einer anderen Stelle eingebaut. Ein paar Zeilen unter der Stelle, wo das hier beschriebene Problem lag. In der nächsten Build kann das Delay auf maximal 999 gesetzt werden, reicht das? Das Entfernen sollte während dem "Warten…" auch funktionieren, wurde kurz getestet.

Noch einen schönen Abend und danke für die Inspiration!
LG/Best regards, Alex

"Journalism is printing what someone else does not want printed. Everything else is public relations."
- George Orwell

D1734FA178BF7D5AE50CB1AD54442494