できるだけ詳しく説明します。前もって感謝します。時間が切れたときに多くのタイマーを宣言してタイマーを停止するにはどうすればいいですか?
配列やその他のメソッドを使用するようなタイマーを多く宣言する方法はありますか?タイマーが切れるか時間が経過するとタイマーを停止しますか?
私はt.Stop()を試しました。と他のタイマーの方法は、私はそれを動作させることはできません。 このコードは、毎分、またはユーザーがタイマーに入力したメッセージボックスを表示します。問題は、複数のタイマーがあるときにタイマーを止めるように見えてしまうことです。
私はユーザーがタイマーを入力できるようなフォームを持っています。たとえば、1分です。このフォームは、データグリッドビューで行を選択するとポップアップし、時間または分を秒に変換して正常に動作します。ここ
after you input the timer, after 1 minute a message box will appear and stop the current timer.
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("Please Indicate How Many Minutes/Hours.");
}
else
{
string desu = textBox1.Text;
int temp = 0;
if (int.TryParse(desu, out temp))
{
if (comboBox1.Text == "Hours")
{
//hours to seconds
time = temp * 3600;
eta = desu + "Hours";
this.Close();
}
else if (comboBox1.Text == "Minutes")
{
//minutes to seconds
time = temp * 60;
eta = desu + "Minutes";
this.Close();
}
}
else
{
MessageBox.Show("Please enter a valid integer");
}
}
}
はタイマー
public void Start()
{
ETA_Input frm = new ETA_Input(this);
startTime = DateTime.Now;
t = new System.Timers.Timer(1000 * f);
t.Elapsed += timer_Elapsed;
t.Enabled = true;
}
を開始するときに呼び出すメソッドで、その後、ここではフォームをトリガーどこ入力時間または数分することができ、および行を渡すところであります値をリストビューに追加し、datagridviewの値とdatabseの値のいずれかを変更します。
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
ETA_Input frm = new ETA_Input(this);
frm.ShowDialog();
if (frm.time != 0)
{
string name = dataGridView1.CurrentRow.Cells[0].Value.ToString();
int deku = Int32.Parse(name);
string constring = "server=localhost;database=dbhorizon;uid=root;password=1234";
string Query = "update tblUserIdd set User_Available = 'Ongoing' where User_ID='" + deku + "' ";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
MySqlDataReader myReader;
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
dgvref();
string id = dataGridView1.CurrentRow.Cells[0].Value.ToString();
string naem = dataGridView1.CurrentRow.Cells[1].Value.ToString();
string field = dataGridView1.CurrentRow.Cells[2].Value.ToString();
f = frm.time;
Start();
seconds = string.Format("{0:HH:mm:ss tt}", DateTime.Now);
string[] row = { id, naem, field, seconds, frm.eta,custb };
var listViewItem = new ListViewItem(row);
listView1.Items.Add(listViewItem);
}
}
、ここでデータベースへのDataGridViewの値を変更しながら、私は時間が経過したタイマーを停止し、リストビュー内の項目を削除することを目的と経過時間のイベントです。私はまた、時間が経過したか経過したアイテムを取り除くように見えます。
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
TimeSpan timeSinceStart = DateTime.Now - startTime;
MessageBox.Show("A Service is finished");
string name = dataGridView1.CurrentRow.Cells[0].Value.ToString();
int deku = Int32.Parse(name);
string constring = "server=localhost;database=dbhorizon;uid=root;password=1234";
string Query = "update tblUserIdd set User_Available = 'Available' where User_ID='" + deku + "' ";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
MySqlDataReader myReader;
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
dgvref();
}
チェックこのhttps://stackoverflow.com/questions/1435876/do-c-sharp-timersにtheresのリセット-elapse-on-a-separate-thread –