【发布时间】:2016-12-14 06:29:04
【问题描述】:
正如标题中所写,计时器间隔中的某些内容似乎已关闭。计时器应该从“DateTimePicker”中获取时间,将其转换为秒并将间隔更改为 DateTimePicker 上设置的时间。之后它应该在 Twitter 上发布一条推文,尽管它不起作用。它只是一遍又一遍地发送垃圾邮件。
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)";
}
结果:
如图所示,标签不会刷新,也不会使用新的设置时间。它只是在随机时间随机发布文本。 提前感谢您的帮助。
【问题讨论】:
-
你知道
Interval是毫秒吗?另外,不要以这种方式使用计时器。将其设置为每秒tick,然后在tick事件中检查预定时间是否已过,如果已过则发送并清除“任务”,否则不执行任何操作 -
或者您可以使用 TimeOfDay 属性从 DateTime 获取时间部分?这将返回一个 TimeSpan,其
TotalMilliseconds属性以毫秒为单位返回时间?你可以写postInterval.Interval = (int)IntervalChoose.Value.TimeOfDay.TotalMilliseconds; -
lmao 我完全忘了是MS;我会试试@PanagiotisKanavos
标签: c# timer tweetsharp