程式設計(控制器設計) switch-case 應用

程式設計(控制器設計) switch-case 應用

程式設計(控制器設計) switch-case 應用


01.定時 執行/控制 switch-case & Timer(thread) -ChatGPT(C# switch case timer) [C# Console Timer]

using System;
using System.Timers;

class Program
{
    static void Main(string[] args)
    {
        // 创建定时器
        Timer timer = new Timer(1000); // 每秒执行一次

        // 定时器事件
        timer.Elapsed += (sender, e) =>
        {
            // 获取当前时间
            DateTime now = DateTime.Now;

            // 根据当前时间判断执行的操作
            switch (now.Second)
            {
                case 0:
                    Console.WriteLine("整点报时:{0}点整", now.Hour);
                    break;
                case 30:
                    Console.WriteLine("半点报时:{0}点半", now.Hour);
                    break;
                default:
                    Console.WriteLine("当前时间:{0}:{1}:{2}", now.Hour, now.Minute, now.Second);
                    break;
            }
        };

        // 启动定时器
        timer.Start();

        // 等待用户输入
        Console.ReadLine();
    }
}


02.順序/狀態機 控制 switch-case & Timer(thread)

using System;
using System.Timers;

class Program
{
	public static int Step=0;
    static void Main(string[] args)
    {
		
        // 创建定时器
        Timer timer = new Timer(1000); // 每秒执行一次
		Step=0;
        // 定时器事件
        timer.Elapsed += (sender, e) =>
        {

            // 根据当前时间判断执行的操作
            switch (Step)
            {
                case 0:
                    Console.WriteLine("Step 0");
					Step=1;
                    break;
                case 2:
					Console.WriteLine("Step 2");
					Step=10;
                    break;
                case 1:
					Console.WriteLine("Step 1");
					Step=2;
                    break;					
                default:
					Step=0;
                    break;
            }
        };

        // 启动定时器
        timer.Start();

        // 等待用户输入
        Console.ReadLine();
    }
}


03.switch函式不加break的效果 等同 if判斷式中執行 || 運算

int i=10

switch(i)
{
case 10:
case 20:
	break;
}

//----

if((i==10) || (i==20))
{
}


04.簡化 多個if-else

int i=0;

if(i==0)
{
}
else if(i==1)
{
}
else if(i==2)
{
}
else
{
}

//---

switch(i)
{
	case 0:
		break;
	case 1:
		break;
	case 2:
		break;		
}

3 thoughts on “程式設計(控制器設計) switch-case 應用

  1. 使用 if 判斷式 定時 執行/控制


    public class SyncThread//背景同步(上傳)資料到 cloud
    {
    private static int m_intStepCount = 0;

    private static int m_intWaitCount = 0;//等待存取DB計數器
    public static bool m_blnWait = false;//預防同時存取DB旗標

    public static bool m_blnRunLoop = false;//執行序執行與否狀態變數
    public static void ThreadMain()//執行序的主函數
    {
    m_blnRunLoop = true;

    do
    {
    m_intStepCount++;

    if (m_blnWait)
    {
    m_intWaitCount++;
    if (m_intWaitCount >= 5)
    {
    m_blnWait = false;
    m_intWaitCount = 0;
    }
    }

    if (!HttpsFun.WebRequestTest(ref main.m_intNetworkLevel))//確認網路狀態
    {
    continue;
    }

    if (VTEAMCloudAPI.Authentication())
    {
    GetVTSTOREData();//每秒都執行一次

    if (m_intStepCount % 2 == 0)//2秒執行一次
    {
    }//2秒執行一次

    if (m_intStepCount % 3 == 0)//3秒執行一次
    {
    }//3秒執行一次

    if (m_intStepCount % 4 == 0)//4秒執行一次
    {
    }//4秒執行一次

    if (m_intStepCount % 5 == 0)//5秒執行一次
    {
    UploadData2Cloud();
    m_intStepCount = 0;//清宮旗標,重新計數
    }//5秒執行一次

    }//if (VTEAMCloudAPI.Authentication())

    Thread.Sleep(1000);//每次執行中間間隔時間
    } while (m_blnRunLoop);

    }//public static void mainSync()

  2. 規則: 最大週期為10秒 其中 每2秒要執行A動作一次 每3秒要執行B動作一次 每10秒要執行C動作一次

    switch模式

    switch(count)
    {
    case 02:
    case 04:
    case 06:
    case 08:
    case 10:
    A();
    if(count==10)
    {
    C();
    }
    break;
    case 03:
    case 06:
    case 09:
    B();
    break;
    }
    count++;
    if(count>10)
    {
    count=1;
    }
    sleep(1000);

    if模式:

    if((count==2)||(count==4)||(count==6)||(count==8)||(count==10))
    {
    A();
    if(count==10)
    {
    C();
    }
    }

    if((count==3)||(count==6)||(count==9))
    {
    B();
    }

    count++;
    if(count>10)
    {
    count=1;
    }
    sleep(1000);

    1. 控制系統中大時間週期內 有包含數個重複性小時間任務要重複執行時

      switch 語法 並不會比 if-else 更精簡/好維護

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *