早上全部,C#线程,线程不持久
使用C#.NET 4.0和Visual Studio 2012 Express。
我有一个程序运行一些SQL存储过程,然后打开和Access数据库并自动生成报告,然后通过电子邮件发送。
我把它设置在一个日期,所以它会在午夜来临时运行。
以下是代码示例。
private void button1_Click(object sender, EventArgs e)
{
Thread myUltiThread = new Thread(GetCurrentDate);
myUltiThread.Start();
}
private void GetCurrentDate()
{
string myDate = "";
myDate = DateTime.Today.Day.ToString();
if(myDate == "7" && myDateToggle == false)
{
Task t = new Task(() => RunMonthBackUp());
t.Start();
}
if (myDate == "8" && myDateToggle == true)
{
myDateToggle = false;
}
}
因此,大家可以看到,一旦按下按钮,我的程序,然后启动该线程,它使用getDate方法,这种方法检查日期是正确的。
如果是,那么它启动一个运行整个过程的任务。
我的问题是,这没有发生,我相信它是因为该方法只运行一次。我有一种感觉,这是由于我对线程不太了解(通常只处理任务)。
有人能指出我哪里错了,以及如何正确地设置此设置?
非常感谢你们
你的父亲是一个传奇,为什么我没有想到一个简单的循环内的方法。可能不是干净的解决方案,但好的和简单的几乎没有额外的代码+1给你先生! – lemunk
你可能不想检查经常的日期!为此,您最好使用Forms.Timer启动备份。为了减少浪费,请每隔半小时检查一次时间/日期,例如,直到备份时间到达前一小时。然后每分钟检查一次,直到最后几分钟,然后计算剩余时间到午夜的时间,并将计时器最后一次设置为该值。 –
@StevenSmith哦!我忘了一件事。请在循环中放置一个'Thread.Sleep(1)'。这样线程不会吃掉CPU。感谢@Martin。 –