c#中语句为假时如何循环执行?

How to Make looping Execute When Statement Is False in c#?

我为执行 ssis 包制作了 WinForms 应用程序,我想用日期选择器制作计时器,所以当我在下午 5 点选择日期选择器时,该方法将在下午 5 点执行。我很难做到这一点首先我用 do while 尝试了这个但是当语句为假时它只会停止执行并且当语句为真时将始终执行,否则我想要创建的是,我想循环就像检查不执行,所以它会一直循环检查,只有当语句为真时才会执行

do
{
    Executed();
}
//Label3 is DateTimeNow
while (dateTimePicker1.Text == label3.Text);

所以逻辑是这样的,但是相反的方式,代码将循环直到语句为真,而通常语句从 true 开始,当语句为 false 时将停止循环,而我试图实现的是statement 从 false 开始,并会一直检查直到 statement 为 true。我们能做到吗?谢谢

您可以使用非运算符“!”

while (dateTimePicker1.Text != label3.Text);

与其使用循环来检查是否需要 DateTimePicker 的值,不如使用 Timer 并处理其 Tick 事件来检查 DateTime.Now 是想要的时间:

bool handled = false;
private void timer1_Tick(object sender, EventArgs e)
{
    var d1 = DateTime.Now;
    var d2 = dateTimePicker1.Value;

    if (d1.Year == d2.Year && d1.Month == d2.Month && d1.Day == d2.Day &&
        d1.Hour == d2.Hour && d1.Minute == d2.Minute)
    {
        if (!handled) //Allow running once
        {
            handled = true;
            DoSomething();
        }
    }
}

注意 1: 要使上面的示例正常工作,请确保将定时器的 Interval 属性 设置为 30000 到 运行 每 30 秒和 Start 计时器,只要您希望调度程序开始监视。然后 DoSomething 方法将在您使用 DateTimePicker 设置的确切时间(达到分钟级)运行。您可以根据您的要求更改条件,例如每天在指定时间运行,您可以删除d1.Day == d2.Day

注2: :创建了像Quartz这样的调度库,让您可以轻松地在应用程序中创建计划任务。