我得到了帮助:http://forum.codecall.net/topic/65434-c-working-with-timers/ (其中使用了递减计数器,但它在我的应用程序中不起作用)
我有一些文本字段和两个按钮:提交和更新。 我已经实现了一个从工具栏到更新按钮的计时器。
我希望这个计时器运行 10 分钟,然后禁用更新按钮。但目前它只运行了 2 分钟。
按钮代码:
<asp:Button ID="Btnsave" runat="server" CssClass="bt3dbuttons"
onclick="Btnsave_Click" OnClientClick="return confirm('Data Submitted')"
Text="Submit" Width="77px" />
<asp:Timer ID="Timer2" runat="server" ontick="Timer2_Tick">
</asp:Timer>
<asp:Button ID="Butnupdate" runat="server" CssClass="btupbuttons"
onclick="Btnupdate_Click" Text="Update" visible="false" Width="85px" />
这是定时器的代码:
private System.Timers.Timer aTimer = new System.Timers.Timer(600000)
{ AutoReset = false };
protected void Timer2_Tick(object sender, EventArgs e)
{
aTimer = new System.Timers.Timer(600000);
aTimer.Interval = 600000;
double counter = aTimer.Interval;
counter++;
if (counter >= 600000)
{
Butnupdate.Enabled = false;
MessageBox.Show("Time Up!");
}
}
更新按钮代码:
protected void Btnupdate_Click(object sender, EventArgs e)
{
string id = Id.Text.Trim();
string name = Name.Text;
string project = Project.Text;
string result = Total.Text;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CM_Connection"].ConnectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
try
{
//lets check that the user typed the first number
if (Viva.Text.Length > 1)
{
VivaLabel.Text = "Please enter a valid number to add.";
return;
}
//lets check that the user typed the second number
else if (Presentation.Text.Length > 1)
{
PresentationLabel.Text = "Please enter a valid number to add.";
return;
}
else if (Confidence.Text.Length > 1)
{
ConfidenceLabel.Text = "Please enter a valid number to add.";
return;
}
else if (System.Text.Length > 1)
{
SystemLabel.Text = "Please enter a valid number to add.";
return;
}
//Now we have valid inputs
//Lets put them into integer values
int number1 = int.Parse(Viva.Text);
int number2 = int.Parse(Presentation.Text);
int number3 = int.Parse(Confidence.Text);
int number4 = int.Parse(System.Text);
//Now lets add the numbers
int total = number1 + number2 + number3 + number4;
//lets place it into the TextBox3
Total.Text = total.ToString();
// cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = @"UPDATE Result SET Name = @name, Project = @project, Result = @result WHERE ID = @id";
con.Open();
cmd.Parameters.AddWithValue("@id", Id.Text.ToString());
cmd.Parameters.AddWithValue("@name ", Name.Text.ToString());
cmd.Parameters.AddWithValue("@project ", Project.Text.ToString());
cmd.Parameters.AddWithValue("@result ", Total.Text.ToString());
cmd.ExecuteNonQuery();
}
catch (Exception ex1)
{
//Report error to user in the bottom Label
MessageBox.Show(ex1.Message);
}
}
}
最佳答案
使用此代码作为指南
public class Timer1
{
private static System.Timers.Timer aTimer;
public static void Main()
{
// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(600000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 10 minutes
aTimer.Interval = 600000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
// If the timer is declared in a long-running method, use
// KeepAlive to prevent garbage collection from occurring
// before the method ends.
GC.KeepAlive(aTimer);
}
// Specify what you want to happen when the Elapsed event is
// raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Butnupdate.Enabled = false;
MessageBox.Show("Time Up!");
}
}
示例取自
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
关于c# - 如何让计时器运行 10 分钟然后禁用按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282260/