Wie im Titel geschrieben, scheint etwas im Timer-Intervall ausgeschaltet zu sein. Der Timer sollte die Zeit von einem "DateTimePicker" nehmen, in Sekunden umwandeln & das Intervall auf die am DateTimePicker eingestellte Zeit ändern. Danach sollte es einen Tweet auf Twitter posten, obwohl es nicht funktioniert. Es hält nur Spam-Beiträge immer und immer wieder.C# Timer-Intervall funktioniert nicht
private void IntervalChoose_ValueChanged(object sender, EventArgs e) //DateTimePicker
{
postInterval.Interval = (IntervalChoose.Value.Hour * 3600) + (IntervalChoose.Value.Minute * 60) + IntervalChoose.Value.Second;
saveTimerInterval = postInterval.Interval; //saveTimerInterval is set 0 at the beginning
MessageBox.Show("Current Interval in Seconds: " + postInterval.Interval.ToString());
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start Bot") //Starts program (works)
{
IntervalChoose.Enabled = false;
MessageBox.Show(saveTimerInterval.ToString());
postInterval.Interval = saveTimerInterval; //Sets the interval (once again, safecall)
postInterval.Start(); //starts posting.
button1.Text = "Stop Bot";
}
private void postInterval_Tick(object sender, EventArgs e)
{
var service = new TwitterService("", "", "", ""); //Auth Keys
var twitterStatus = service.SendTweet(new SendTweetOptions() { Status = "Hi" + counter });
if (twitterStatus != null)
{
MessageBox.Show("Your Message:\n\n\"" + "Hi" + counter + "\"\n\n has been successfully tweeted.", "Success!", MessageBoxButtons.OK);
counter++;
}
else
{
//MessageBox.Show("An Error occured while the Bot was running. Please Contact the Developer.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
label2.Text = "Next Post in:\n" + (postInterval.Interval/3600) + " Hour(s) " + ((postInterval.Interval/3600)/60) + " Minute(s) " + (((postInterval.Interval/3600)/60)/60) + " Second(s)";
}
Ergebnis:
wie auf den Bildern zu sehen ist, wird das Etikett nicht aktualisieren, noch die neu eingestellte Zeit verwendet wird. Es hat nur zufällig einen Text in zufälliger Zeit gepostet. Vielen Dank im Voraus für die Hilfe.
verwenden Sie wissen, "Intervall" ist Millisekunden richtig?Verwenden Sie auch keinen Timer auf diese Weise. Setze es jede Sekunde auf "tick", dann überprüfe im "tick" -Ereignis, ob die geplante Zeit abgelaufen ist, wenn ja, dann sende und lösche die 'Aufgabe', ansonsten tue nichts – musefan
Oder dass du den Zeitanteil von einer DateTime bekommst mithilfe der TimeOfDay-Eigenschaft? Das gibt ein TimeSpan zurück, dessen Eigenschaft 'TotalMilliseconds' die Zeit als Millisekunden zurückgibt? Sie können schreiben 'postInterval.Interval = (int) IntervalChoose.Value.TimeOfDay.TotalMilliseconds;' –
lmao Ich habe total vergessen, es war MS; Ich werde versuchen @PanagiotisKanavos – DaiSuki53