C# 多线程任务例子——定时上传
1.通过一个按钮的事件用于启动和关闭任务;
private void startBT_Click(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
if (startBT.Text.Contains("开始"))
{
startBT.Text = "停止上传";
cmbMinute.Enabled = false;
cmbSecond.Enabled = false;
timer.Interval = 1000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(TimerPlan);
//timer.AutoReset = true;
timer.Start();
}
else
{
startBT.Text = "开始上传";
cmbMinute.Enabled = true;
cmbSecond.Enabled = true;
timer.Stop();
timer.Close();
}
}
2.具体的任务内容(根据需求更改)。
private void TimerPlan(object sender, System.Timers.ElapsedEventArgs e)
{
var intMinute = e.SignalTime.Minute;
var intSecond = e.SignalTime.Second;
var intHour = e.SignalTime.Hour;
//每天8的倍数小时数信息框清空
if (intHour % 8 == 0 && intMinute == Convert.ToInt32(cmbMinute.Text) &&
intSecond == Convert.ToInt32(cmbSecond.Text))
{
msgTB.Text = "";
}
//每小时连一次sftp获取文件
if (intMinute == Convert.ToInt32(cmbMinute.Text) && intSecond == Convert.ToInt32(cmbSecond.Text))
{
msgTB.Text += DateTime.Now.ToString() + ":开始创建csv文件!\r\n";
CreateSNFile(DateTime.Now);
UploadSNFile();
//如果有需要补传的文件
if (checkIsUpload())
{
msgTB.Text += DateTime.Now.ToString() + ":开始补传csv文件!\r\n";
autoReupload();
}
else
{
msgTB.Text += DateTime.Now.ToString() + ":没有待补传的数据!\r\n";
}
}
}