[英]Message Box Pops up more than once
我有以下代碼,timerStart方法將每秒調用一些函數,問題是當checkSigning方法中的條件為true時,彈出窗口出現多次。.我如何解決此問題? 有人可以幫我嗎:<
public void timerStart()
{
DispatcherTimer updaterTimer = new DispatcherTimer();
updaterTimer.Tick += new EventHandler(updaterTimer_Tick);
updaterTimer.Interval = new TimeSpan(0, 0, 1);
updaterTimer.Start();
}
private void updaterTimer_Tick(object sender, EventArgs e)
{
Time.Content = "Time : " + DateTime.Now.ToLongTimeString();
exist = saved_settings();
if (exist)
{
settingForToday();
checkSigningAvailable();
setSigning(signingAvailable = getSigning());
}
else
{
ongoing.Content = "Event : No Event";
sign_in.Content = "Sign-in Time : ";
sign_out.Content = "Sign-out Time : ";
}
}
public void checkSigningAvailable()
{
if (dt_signing_in.CompareTo(DateTime.Now) < 0)
{
if ((!InisOver && signing.Equals("in")) || (!InisOver && signing.Equals("in_out") && !OutisOver))
{
disableSigningIn(OutisOver.ToString(),this.event_id);
}
}
if (dt_signing_out.CompareTo(DateTime.Now) < 0)
{
if ((!OutisOver && signing.Equals("out")) || (!OutisOver && signing.Equals("in_out") && InisOver))
{
disableSigningOut(InisOver.ToString(),this.event_id);
}
}
}
public void disableSigningOut(string In,string event_id)
{
MessageBox.Show("Signing out is over!", "No more signing out!", MessageBoxButton.OK, MessageBoxImage.Information);
connection.Open();
string sign = In + ",True";
string query = "update data_storage set data_details = '" + sign + "' where data_name = 'Signing';";
NpgsqlCommand command = new NpgsqlCommand(query, connection);
NpgsqlDataReader dr = command.ExecuteReader();
dr.Close();
connection.Close();
sign_out.Content = "Sign-out Time : Over";
string query2 = concatQuery(getIDnumberAttendance(event_id));
updateAbsences(query2);
}
您可以在執行刻度線時停止計時器,然后在最后重新啟動計時器。 唯一的缺點是時間將以您完成updaterTimer_Tick執行的時間為准-但您也可以將其視為一種好處。
private void updaterTimer_Tick(object sender, EventArgs e)
{
updaterTimer.Stop();
Time.Content = "Time : " + DateTime.Now.ToLongTimeString();
exist = saved_settings();
if (exist)
{
settingForToday();
checkSigningAvailable();
setSigning(signingAvailable = getSigning());
}
else
{
ongoing.Content = "Event : No Event";
sign_in.Content = "Sign-in Time : ";
sign_out.Content = "Sign-out Time : ";
}
updaterTimer.Start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.