仅在经过一段时间后执行某些操作
本文关键字:操作 执行 经过 一段时间 | 更新日期: 2023-09-27 18:08:57
这对我来说有点难以解释,但是看:
我做了一个MMORPG服务器启动器,它有一个开始按钮,当你点击它时,会弹出一个小窗口,要求你为服务器投票,然后你可以再次点击开始启动游戏(在你真正开始游戏之前有10秒的倒计时)
唯一的问题是投票网站每12小时只接受用户的投票(基于IP和cookie),在有人投票一次后,每次你想开始游戏时都有一个小窗口弹出并等待,这有点烦人。
我的想法是:当有人点击打开投票窗口时,他的系统日期和确切时间就会被写入一个文件中。
之后,每次你点击开始启动器读取日期和时间,并计算如果12小时已经过去了,因为你上次投票,如果是,它会要求你再次投票,如果不是,它会跳过这部分,直接开始游戏。
我不是很有经验,我不知道从哪里开始,如何使这个工作,你的帮助是非常感谢的。
谢谢!
如果可以的话,这是我的活动。
private void btnStart_Click(object sender, EventArgs e)
{
var voteForm = new VoteWindow();
voteForm.Show();
voteForm.BringToFront();
this.Enabled = false;
}
这是我实际启动游戏的代码。
private void btnStart2_Click(object sender, EventArgs e)
{
string error1 = "Deleted because it was too long...";
string title1 = "Deleted because it was too long...";
if (File.Exists("engine.exe"))
{
Process.Start("engine.exe", "/load /config debug");
Application.Exit();
}
else
{
MessageBox.Show(error1, title1, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
只用Properties.Settings
。您可以通过进入Solution Explorer
创建一个新设置,然后展开Properties
并打开Settings.Settings
。在这个页面上,你可以创建一个新的System.DateTime
对象。然后你会做这样的事情。
private void btnStart_Click(object sender, EventArgs e)
{
TimeSpan ts = DateTime.Now - Properties.Settings.Default.MySetting;
if (ts.TotalHours > 12)
{
Properties.Settings.Default.MySetting = DateTime.Now;
Properties.Settings.Default.Save();
var voteForm = new VoteWindow();
voteForm.Show();
voteForm.BringToFront();
this.Enabled = false;
}
}