C#如何实现循环执行两段代码

在循环的情况下,先循环执行A,一段时间后,循环执行B一段时间后,又循环执行A.

正确处理是状态机,你自己判定应该何时迁移状态

当然状态机实现有无数种,如果说你是简单时间相关,甚至你可以直接写成一个时间函数,伪代码

var t=Cos(time)
 switch{t}
     t >=0 :执行A
     t<0 执行B

这种代码你可以想成一个和时间相关的余弦波,time可以决定值是>0 还是<0,那么其实就解决了,你“不知道什么时候更改他”的问题,你不需要更改他,你只需要带入计算,他自己会变

可以使用定时器:

using System;
using System.Timers;

class Program
{
    static Timer timer;
    static bool executeA = true; // 标记是否执行代码段A

    static void Main(string[] args)
    {
        timer = new Timer();
        timer.Interval = 3000; // 定时器间隔,单位为毫秒,根据自己需要修改
        timer.Elapsed += Timer_Elapsed;
        timer.Start();

        // 按任意键停止程序,或者根据执行次数、执行时间等设置结束条件
        Console.WriteLine("按任意键停止程序...");
        Console.ReadKey();

        timer.Stop();
        timer.Dispose();
    }

    static void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        if (executeA)
        {
            // 执行代码段A
            Console.WriteLine("执行代码段A");
        }
        else
        {
            // 执行代码段B
            Console.WriteLine("执行代码段B");
        }

        executeA = !executeA; // 切换执行代码段的标记
    }
}

也可以在一个大循环中通过线程暂停的方式交替执行:

bool executeA = true; // 是否执行代码段A
while (true)
{
    if (executeA)
    {
        // 执行代码段A
        Console.WriteLine("执行代码段A");
    }
    else
    {
        // 执行代码段B
        Console.WriteLine("执行代码段B");
    }

    // 切换执行代码段的标记
    executeA = !executeA;

    System.Threading.Thread.Sleep(2000); // 休眠指定时间,单位为毫秒,根据自己需要修改
    //可以根据执行次数、执行时间等设置循环退出条件
}

在C#中,可以使用while循环和适当的条件判断来实现交替执行两段代码的循环。示例代码:

while (true)
{
    // 执行代码段 A
    // ...

    // 一段时间后切换到执行代码段 B
    System.Threading.Thread.Sleep(1000); // 休眠1秒钟,可根据需要调整时间

    // 执行代码段 B
    // ...

    // 一段时间后切换回执行代码段 A
    System.Threading.Thread.Sleep(1000); // 休眠1秒钟,可根据需要调整时间
}


代码段 A 和代码段 B 分别代表想要执行的两段代码。使用while (true)来创建一个无限循环,这意味着循环将一直执行下去,除非遇到break语句或者在循环体中使用return来退出循环。

在每个循环迭代中,首先执行代码段 A。然后,使用System.Threading.Thread.Sleep方法使程序暂停一段时间(这里设置为1秒),以便等待切换到代码段 B 的时间。之后,执行代码段 B。再次使用Sleep方法使程序暂停一段时间,然后切换回代码段 A。这样循环将继续执行,交替执行代码段 A 和代码段 B。