Как указано в заголовке, что-то в таймерном интервала кажется выключенным. Таймер должен занять время от «DateTimePicker», преобразовать его в секунды &, чтобы изменить интервал на время, установленное на DateTimePicker. Впоследствии он должен опубликовать твиттер в твиттере, хотя он не работает. Он просто держит спам-сообщения снова и снова.C# Таймер Интервал не работает
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)";
}
Результат:
Как видно из картинки, метка не будет обновляться, и новое время набора используется. Он просто случайно помещал текст в случайное время. Заранее благодарим за помощь.
Вы знаете, что 'Интервал' равен миллисекундам?Кроме того, не используйте таймер таким образом. Установите его «галочку» каждую секунду, затем в событии «tick» проверьте, прошло ли запланированное время, если да, то отправьте и очистите «задачу», в противном случае ничего не сделайте – musefan
Или вы можете получить временную часть из DateTime используя свойство TimeOfDay? Это возвращает TimeSpan, чье свойство TotalMilliseconds возвращает время в миллисекундах? Вы можете написать 'postInterval.Interval = (int) IntervalChoose.Value.TimeOfDay.TotalMilliseconds;' –
lmao Я полностью забыл, что это MS; Я попробую @PanagiotisKanavos – DaiSuki53