|
You last visited: Today at 00:18
Advertisement
C# Countdown mit sich öffnendem Link?
Discussion on C# Countdown mit sich öffnendem Link? within the .NET Languages forum part of the Coders Den category.
08/24/2010, 20:42
|
#1
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
C# Countdown mit sich öffnendem Link?
Hallo, ich habe mal wieder angefangen Pennergame zu spielen... nach einiger Zeit  So und als ich dann gemütlich am skillen war, dachte ich mir, hey bastel doch ein Programm, das du an alle deine Freunde weitergibst, welches deinen Link alle 60 Minuten öffnet.
Also hab ich mich erkundigt mit welchem Programm man das anstellen kann und bin auf Microsoft Visual 2010 Express gestoßen. Hab ich mir dann auch runtergeladen. Hab dann ein Fenster mit nem Butten der meinen Spendenlink öffnet erstellt. So weit so gut, noch ein schönes Icon eingefügt, mir einen passenden Namen überlegt und gut wars.
Jetzt hab ich aber nur ein Programm welches meinen Link anzeigt. Ich will aber eine ProgressBar mit einem 60 Minuten Timer und wenn der Timer abgelaufen ist, soll eine MessageBox erscheinen, die den Leuten sagt, dass sie jetzt wieder spenden sollen. (Wenn ich dann noch Zeit und Lust habe würde ich dann ein RadioButton anlegen, für 1. nach 60 Minuten eine Meldung zeigen oder 2. automatisch Spenden...aber erstmal das wichtigste  )
Ich brauche also einen Countdown, der auch in der ProgressBar angezeigt wird(und die verbleibende Zeit soll auch in einem Label erscheinen, welches ich dann über die ProgressBar lege)
Ich hoffe ihr könnt mir helfen 
Danke schon mal im Vorraus
FizzeBu
|
|
|
08/24/2010, 21:06
|
#2
|
elite*gold: 38
Join Date: Dec 2008
Posts: 1,339
Received Thanks: 462
|
Es gibt 2 einfach Lösungen:
1. Ein Thread der einfach 60 mins schläft und dann die Funktion die du willst ausführt.
2. Der Timer der nach 60 mins einfach sein Event ausführt
P.S. intern macht der Timer nichts anderes als Nummer 1
|
|
|
08/24/2010, 21:39
|
#3
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
Ja des is warscheinlich super einfach aber ich hab heute Nachmittag mit pragrammieren angefangem... ich bitte um eine etwas ausführlichere Erklärung
Aber trozdem Danke
|
|
|
08/24/2010, 22:33
|
#4
|
elite*gold: 260
Join Date: Apr 2010
Posts: 229
Received Thanks: 142
|
Er möchte es aber in einem Progressbar eingezeigt bekommen
Am besten du machst da eine While Schleife.
Die könnte beispielweise so aussehen
Code:
int min;
While(min>0)
{
Sleep(60000); // Sleep erwartet Milisekunden 1s = 1000ms, 1min = 60s = 60000ms
min--;
}
Die Variable min einfach noch in nen String convertieren und als Text für ein Label
|
|
|
08/24/2010, 22:42
|
#5
|
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
|
Ich würde das Ganze mit einem Timer realisieren, das ist wesentlich sauberer und einfacher als das beschriebene Beispiel mit der while-Schleife.
Mit einem Thread würde ich nicht unbedingt arbeiten in dem Fall, da du dann noch Delegates und Invokes erstellen musst weil du sonst CrossThreadExceptions kriegst wenn du versuchst die ProgressBar aus dem Thread heraus zu aktualisieren.
Ich meine im Prinzip ist es mit dem Thread auch möglich, aber für einen Anfänger eher schwieriger.
|
|
|
08/25/2010, 06:59
|
#6
|
elite*gold: 38
Join Date: Dec 2008
Posts: 1,339
Received Thanks: 462
|
Quote:
Originally Posted by Walter Sobchak
Ich würde das Ganze mit einem Timer realisieren, das ist wesentlich sauberer und einfacher als das beschriebene Beispiel mit der while-Schleife.
Mit einem Thread würde ich nicht unbedingt arbeiten in dem Fall, da du dann noch Delegates und Invokes erstellen musst weil du sonst CrossThreadExceptions kriegst wenn du versuchst die ProgressBar aus dem Thread heraus zu aktualisieren.
Ich meine im Prinzip ist es mit dem Thread auch möglich, aber für einen Anfänger eher schwieriger.
|
Ja ich wollte aber trotzdem den Thread als erstes nehmen, der Timer feuert zwar sein Event aber dieses wird dannn wieder im den GUIThread ausgeführt, damit umgeht man zwar sehr sehr leicht das Problem zwei Threads auf ein Objekt zugreifen. Aber ich bin kein Fan von den Timerobjekten, weil wenn ich schon einen zweiten Thread brauche dann will ich meist nicht nur die Zeit abwarten.
@Madd Eye: man kann auch mit einem Thread oder einem Timer eine Progressbar füllen und Wartezeiten sollte man eigentlich nicht im GUIThread behandeln, da die Oberfläche nicht neu gezeichnet werden kann udn das Programm sozusagen "einfriert".
|
|
|
08/25/2010, 09:21
|
#7
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
Woow, ich hab Sleep ausprobiert, den Befehl gibts bei mir aber nicht... den Rest versteh ich auch nicht...  könntet ihr mir Code-Beispiele geben? Wär toll
|
|
|
08/25/2010, 22:45
|
#8
|
elite*gold: 38
Join Date: Dec 2008
Posts: 1,339
Received Thanks: 462
|
Quote:
Originally Posted by FizzeBu
Woow, ich hab Sleep ausprobiert, den Befehl gibts bei mir aber nicht
|
Erstens, das liegt auch daran das der Code von Madd Eye nicht so funktioniert wie er ihn gepostet hat.
Quote:
versteh ich auch nicht...
|
Ich verstehe nicht wie man überseine Unweissheit lachen sein kann.
Ich rede nicht von Dummheit oder sonstiges, sondern vom Wissen.
Als ich lache nicht wenn ich mich für einen Bereich intressiere aber da nichts weiss.
Quote:
|
könntet ihr mir Code-Beispiele geben?
|
Ich erkläre dir das mal mit dem Timer.
Zu erst brauchst du ein Timer Objekt.
Quote:
private Timer _TestTimer;
private Timer TestTimer
{
get
{
if (_TestTimer == null)
_TestTimer = new Timer();
return _TestTimer;
}
}
|
So finde ich das für den Zweck am geeignetsten, so kannst du das irgentwo in deiner Klasse Bunker und wenn du das erstmal draufzugreifst wird es erzeugt. Ob man extern noch zugriff auf das Objekt haben will muss man selbst entscheiden.
Nun musst du musst du von deinem Timer Objekt die Eigenschaft "Interval" so setzen wie du es gerne hättest, oben wolltest du ja 60 mins.
Quote:
{
...
TestTimer.Interval = 60000;
...
}
|
Jetzt brauchst du noch deine EventFuntion die aller 60 min ausführen willst.
Quote:
private void MeineSuperStundenFunktion(object sender, EventArgs e)
{
// Dein Code
}
|
Jetzt musst du die Eventfunktion nur noch bei dem "Tick" Event von deinem Timer Objekt anmelden, damit es weiss was es machen muss und das wars
Quote:
|
TestTimer.Tick += MeineSuperStundenFunktion;
|
@TE wenn du mich immer ncoh nicht verstanden hast, NIMM DIR EIN SCHEISS BUCH UND LERN ERSTMAL EIN BISSCHEN DIE SPRACHE.
Weil sonst wirst du blo solche TuDies oder TuDas-Antworten bekommen und nie etwas verstehen
@Alle die denke Visual Studio Timer rein ziehen etc...
Naja wären wir bei den TuDies oder TuDas Antworten, ich denke die die solche Anwroten geben wissen selbst nicht mal was die IDE jemand für Code hinzuaber oder was der richtig bewirkt.
siehe
|
|
|
08/26/2010, 14:45
|
#9
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
Das mit dem Timer hab ich so gelöst:
Code:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
timer1.Enabled = false;
timer1.Enabled = true;
}
if (radioButton1.Checked)
{
timer2.Enabled = false;
timer2.Enabled = true;
}
try
{
System.Diagnostics.Process.Start("http://change.pennergame.de/change_please/1752220/");
}
catch { }
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
MessageBox.Show("Du kannst jetzt wieder spenden", "Wartezeit abgelaufen");
}
private void timer2_Tick(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("http://change.pennergame.de/change_please/1752220/");
}
catch { }
}
Das mit dem Timer erst aus und dann wieder anschalten hab ich so gemacht, dass der Countdown neu startet, falls man auf Button für den Link klickt.
Und ich warte nicht auf TuDies und TuDas Anweisungen. Ich wollte ein Codebeispiel im Sinne von: Man kann mit MessageBox.Show eine Meldung erzeugen ;D
|
|
|
08/26/2010, 17:26
|
#10
|
elite*gold: 38
Join Date: Dec 2008
Posts: 1,339
Received Thanks: 462
|
Quote:
Originally Posted by FizzeBu
Das mit dem Timer hab ich so gelöst:
Code:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
timer1.Enabled = false;
timer1.Enabled = true;
}
if (radioButton1.Checked)
{
timer2.Enabled = false;
timer2.Enabled = true;
}
try
{
System.Diagnostics.Process.Start("http://change.pennergame.de/change_please/1752220/");
}
catch { }
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
MessageBox.Show("Du kannst jetzt wieder spenden", "Wartezeit abgelaufen");
}
private void timer2_Tick(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("http://change.pennergame.de/change_please/1752220/");
}
catch { }
}
Das mit dem Timer erst aus und dann wieder anschalten hab ich so gemacht, dass der Countdown neu startet, falls man auf Button für den Link klickt.
Und ich warte nicht auf TuDies und TuDas Anweisungen. Ich wollte ein Codebeispiel im Sinne von: Man kann mit MessageBox.Show eine Meldung erzeugen ;D
|
habe ich dir doch gegeben oder liege ich falsch
|
|
|
08/26/2010, 20:07
|
#11
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
Sry ich habs erst durchgelesen als ich es schon gepostet habe...
aber danke für deine Hilfe  ich geb dir selbstverständlich ein Thank
Jetzt hab ich nur noch eine Frage:
Ich will meine ProgressBar mit der Zeit fütter. Mit tostring gehts nicht, gibt es da einen gleichwertigen Befehl?
|
|
|
08/26/2010, 21:23
|
#12
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
Hmm ich habe jetzt eine Möglichkeit gefunden. Ich habe einen Timer der in jeder Sekunde der ProgressBar 1 zufügt. Das macht er aber nur einmal. Timer laufen doch eigentlich in einer Endlosschleife bis man sie auschaltet? Warum bei mir nicht?
|
|
|
08/27/2010, 11:52
|
#13
|
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
|
Quote:
Originally Posted by FizzeBu
Hmm ich habe jetzt eine Möglichkeit gefunden. Ich habe einen Timer der in jeder Sekunde der ProgressBar 1 zufügt. Das macht er aber nur einmal. Timer laufen doch eigentlich in einer Endlosschleife bis man sie auschaltet? Warum bei mir nicht?
|
kann es vieleicht sein dass u jedesmal den value der progessbar auf 1 setzt oder so ?
|
|
|
08/27/2010, 12:13
|
#14
|
elite*gold: 38
Join Date: Dec 2008
Posts: 1,339
Received Thanks: 462
|
Quote:
Originally Posted by nkkk
kann es vieleicht sein dass u jedesmal den value der progessbar auf 1 setzt oder so ?
|
ich denke mal auch das es so machst, man kann bei der Progressbar die Methode .PerformStep() aufrufen um die anzahl zu erhöhen
es geht auch immer das value neuzusetzen aber das ist nicht im sinne der Progressbar
die eigenschaft Step sag übrigens um wie viel bei PerformStep erhöht wird
achja bei den Standart Winformscontrols stehen wenigstens noch deutsche hilfe da
|
|
|
08/27/2010, 20:32
|
#15
|
elite*gold: 6
Join Date: Mar 2010
Posts: 12,388
Received Thanks: 2,115
|
danke, das mit performstep hat funktionier  das programm ist fertig  ich wollte es dann nätürlich meinen freunden geben. eine davon hat es gestartet, aber es hat nicht funktioniert... sie hat XP, ich habe windows 7 woran liegt das? idee?
|
|
|
Similar Threads
|
Countdown in GUI
01/09/2009 - GW Bots - 3 Replies
Hi,
wie bekomm ich denn einen Countdown in ne GUI? Aber der countdown soll aber durch zb ne func restartet werden... also er zählt von 10sec nach 0 und sobald man ne func aufruft fängt er neu an...
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 526, 72, 199, 274)
|
Countdown ~ Down 2
10/05/2008 - Metin2 Private Server - 1 Replies
20:50
Serverdown...
o0
|
Countdown ~ Down
10/02/2008 - Metin2 Private Server - 54 Replies
Gerade war ich in longju online und plötzlich schrieb ein Gamemaster (?) 10...9...8...7...6...5...4...3...2...1...
Danach wurden meine beiden longju Fenster geschlossen und nun komme ich nicht mehr rein.
War das einfach ein angekündigter Serverdown?
|
All times are GMT +1. The time now is 00:24.
|
|