發表文章

目前顯示的是 2022的文章

C# 每分整秒運行

using System.Dynamic; namespace CycleSeco {     internal class Program     {         static void Main(string[] args)         {             setTaskAtFixedTime();             while (true)             {                 Console.WriteLine($"{DateTime.Now}");                 System.Threading.Thread.Sleep(1000);             }         }         static DateTime LastTime;         private static void setTaskAtFixedTime()         {             DateTime now = DateTime.Now;             var WaitMinSeco = now.Subtract(LastTime).TotalMilliseconds;             if (WaitMinSeco < 1000)             {                 Console.WriteLine($"Wait {1000 - Convert.ToInt32(WaitMinSeco)} MinSeco");                 System.Threading.Thread.Sleep(1000 - Convert.ToInt32(WaitMinSeco));             }             int[] SetSeco = new int[] { 0, 10, 20, 30, 40, 50 };             DateTime NextTime = DateTime.Now;             var bb = SetSeco.Select(x => now.AddSeconds(-now.Second).AddSeconds(x)).Wher

C# DataTable to CSV

.Net 3.5   StringBuilder sb =  new  StringBuilder();  string [] columnNames = dt.Columns.Cast<DataColumn>(). Select(column => column.ColumnName). ToArray(); sb.AppendLine( string .Join( "," , columnNames)); foreach (DataRow row in dt.Rows) { string [] fields = row.ItemArray.Select(field => field.ToString()). ToArray(); sb.AppendLine( string .Join( "," , fields)); } File.WriteAllText( "test.csv" , sb.ToString()); .Net 4 StringBuilder sb = new StringBuilder(); IEnumerable< string > columnNames = dt.Columns.Cast<DataColumn>(). Select(column => column.ColumnName); sb.AppendLine( string .Join( "," , columnNames)); foreach (DataRow row in dt.Rows) { IEnumerable< string > fields = row.ItemArray.Select(field => field.ToString()); sb.AppendLine( string .Join

ASP.NET Core Razor Component life cycle

 Blazor 元件在啟動時會有一連串的事件觸發,然而在元件觸發時會因不同狀況下所觸發的事件有所不同,下列Code可放在Blazor @Code中來做事件的執行順序觀察。 /// <summary>     /// 當參數 (設定時 SetParametersAsync)     /// </summary>     /// <param name="parameters"></param>     /// <returns></returns>     public override async Task SetParametersAsync(ParameterView parameters)     {         Console.WriteLine("Trigger SetParametersAsync");         await base.SetParametersAsync(parameters);     }     /// <summary>     /// 元件初始化     /// </summary>     protected override void OnInitialized()     {         Console.WriteLine("Trigger OnInitialized");         base.OnInitialized();     }     /// <summary>     /// 元件初始化     /// </summary>     protected override async Task OnInitializedAsync()     {         Console.WriteLine("Trigger OnInitializedAsync");         await base.OnInitializedAsync();     }     /// <summary>     /// 設定參數之後     /// </summary>     prote