發表文章

C#_WinForm如何切換專案下方多份不同Form的執行順序(換另一個做執行)

圖片
通常一份專案只會對應一份視窗 但是有時候不只一個視窗的時候 這時我要如何切換我要執行的視窗呢????? 以下方這個例子 這是一個有兩個 Form 的 專案(project) 此時我們只需要去  下方的  Program.cs 更改這個的名稱即可更換誰執行 就可換成  Form2 執行了優

Advanced_C#_Skill_What is thread,background thread and foreground thread ?_Parallel code execution

圖片
There are two important types of threads 1. background thread  2.  foreground thread Threading in C# means Parallel( 平行的、並行的 ) code execution . 平行處理、並行進程 Parallel Processing 平行計算 Parallel Computing 一個人可以同時一手打電腦、 一手打電話 、一腳彈鋼琴、一腳打鼓 一隻眼看電腦、一隻眼看電視 可以同時一次運行、做好多事情 這就是多執行緒(平行的)概念 Process(行程)是指證在執行中的程式 包含了 存放在 Memory Space 的 (1)Code Section(程式碼、程式區間) (2)Data Section(資料區間) (3)Program Counter(程式計數器) (4)CPU Register(程式計數器) (5)Stack 多個process之間會相互que來que去及做遞迴工作,用以存放返回位址。 Process 為 OS 分配資源的主要對象!!!!!! 我們需要靠 OS 去做控管  例如規劃這個process 做3分鐘 另一個做5分鐘....等等 在傳統的 單執行緒(Process) 重量級行程 就等同於一個Task(Process) 內 只有單一個Thread。 執行緒(又有 "線程" 的說法) 左側只能執行一個工作 ,  右側能執行兩個工作。         (Process)                        (Thread) 一個Process它可以執行一個任務(工作), 他必須要有自己的code section、自己的Data Section、自己的stack、register等等 這些相關資源全部自己要背負,她才可以去正常執行一個任務。 Thread 可有多個...

Advanced_C#_Skill_Multithreading with timer

圖片
今天我要來示範練習寫一個 關於C#  Timer 多執行緒 的寫法 我們產生一個 Console Application 第一步驟 . 引入 using System.Threading 第二步驟. 寫一個 call by Thread 的 function 第三步驟. 為 Threading with timer 寫 code System.Threading.Timer threadingTimer  =  new Timer( TimerCallback callback , // TimerCallback回呼                     object state , // 包含回呼方法中,所使用的資訊的物件或 null                     int due time, // 定時器啟用後多久時間進行第一次呼叫                     int period); // 間隔多久時間進行下一次呼叫 link:  https://msdn.microsoft.com/zh-tw/library/1cy0c7zw.aspx 每隔3秒就讓執行續   執行一次 印出目前時間的字串 程式碼 static void Main(string[] args) { //define thread with timer System.Threading.Timer threadingTimer = new Timer(run, 10, 1, 3000); //每隔3000 millisecond 也就是 3秒 thread 就excute 一次 Console...

Advanced_C#_what is Serialization C#

圖片
Serialization : Serialization is the process of converting an object into a stream. Deserialization : Deserialization is the process of reconstructing an object that has been serialized before. https://www.youtube.com/watch?v=aA-vtbBkd_8

C#_捨麼是 ref (傳址呼叫)捨麼是out(傳出呼叫) _這兩個參數用在哪裡很常看到有人寫他們

圖片
我們就寫一個簡單的增加一歲的函數 記得前面要補加  static  由於C#主程式中main()是屬於靜態方法 You can't access non-static members from a static method.  (Note that  Main()  is static, which is a requirement of .Net) 參考自: http://stackoverflow.com/questions/2505181/error-an-object-reference-is-required-for-the-non-static-field-method-or-prop 你發現都沒變主要原因是因為 宣告方法若無在前面加上  任何  ref  及  out 的 字眼 默認就會是   call  by  value(傳值呼叫) 在call  by  value(傳值呼叫) 中  是把實際參數複製一份作為形式參數傳送給對方使用。 因此  形式參數  與  實際參數  是兩個獨立的 變數 更改形式參數的值 並不會改變影響主程式中實際參數的值 所以你的輸出結果永遠不會變 這裡我在前頭補上  ref  字眼 ref 應用在內部隊外部的值進行更改 ref  必須先初始化,因為我們是參考,所以必須先有內容,才可參考 ============================================================ out 一般用在函數有多個返回值得情況 out 可以不用在外面先初始化,但是一定要在 函數內做初始化(賦予值) 不能在  傳出呼叫的方法中 接收傳入參數 會出現錯誤 我們寫一個  字串示例 這裡介紹一個   TryParse 的方法 它的返回值為  一個 bool 轉換 一串都是數字的string 為 int ...

專研日誌_流程圖_程式設計單一元件一開始的規劃_讀檔部分_【心智圖】及【流程圖】設計工具推薦

圖片
這次又是一個朝專題研究邁進的一天 這個連假,雖然很爽的放了四天但是毫無放假的感覺 但是有回家裡吃到老媽做的菜就精神飽滿許多 在專研方面上  前陣子有跟資深學長討論一下 一些程式功能處理問題以及進度探討 前期規劃十分重要!!!! 【心智圖】Mind Mapping 線上工具免費版好用註冊一下用你google帳號即可使用 http://www.mindmeister.com/ 前期心智圖 一個觀念 : 心智圖絕不可能在起初就完善 頂多只能盡量完善心智圖 盡量讓它完善 所以日後我們會繼續補我們的idea 和覺得有欠缺的部分進去 心智圖中 通常   藍色 : 還未做 黃色 : 正在做 綠色 : 已經完成 透過心智圖可以幫助你整理思緒 和檢查系統規劃完整性 之後是   【流程圖】 Flow Chart 的規劃設計 免費需要載下來用的工具 https://www.yworks.com/products/yed/download 可幫助你建立功能設計上 針對使用者去設想 元件的運行流程 藉此幫助開發者在  設計程式時 程式是如何執行 才可行 也可以用  Word 去規劃你的流程圖 喔!! Word  插入  圖案-->可以選擇流程圖去進行放置 中期 心智圖: 我們到了需要讀檔的階段 接下來是針對 心智圖當中 Read Data部分 去做  心智圖設計細節 我們可能需要 考慮到   檔案的格式  以及   讀檔 這個動作 針對  讀檔  這個動作 讀檔   我們又可 針對他的細節下去做個討論 由於我們存在 指定目錄 下的檔案序列是一串 檔案流,一個接續一個(已經上了編號的) 因此我們需要針對 ( A)對Folder去做定義 目錄下我們還需要考量到 (1)檔案資訊 以及 (2) 檔案的存放路徑 (1) 檔案資訊 又可能需要知道 檔案名稱、有幾個檔案(檔案總數)、可能需要個迴圈之類的 因為我有好多好多的檔案喔!!!! 有迴圈 少不了要有inde...

Advanced_C#_Skill_C# 中泛型在 Class 上的實踐

圖片
泛型   是捨麼意思呢??? 就是指  我們在寫程式的時候需要一個 資料型態(數據類型)然後我們在剛開始的時候還不確定這個數據類型是怎麼樣的 或者是說我們對於不同的多個的數據類型做相同的功能、操作 此時我們要不想要多次的寫這個code 此時  泛型  就派上用場了 我們用泛型來表示 同 一個操作 針對 不同 的數據類型 我們就先來一個 C# Console Application  吧 這是一個泛型的 陣列裏頭用一個間括號加一個T 裏頭 參數是一個 T   可以是各式各樣的類型 我們已經新建好一個  Genere 的  class 也就是 泛型 的class 第一階段Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CS泛型 { class Program { static void Main(string[] args) { } } //創建一個使用到 泛型 的 class //這是一個泛型的 陣列(數組) public class MyGenericArray<T> { private T[] array; //一個陣列型態的成員變數 以T資料型態的陣列 //構造函數(建構子/式)一個屬於有參數的建構式傳進來一個整數型態參數 public MyGenericArray(int size) { array = new T[size + 1]; //使它裏頭局部變數的陣列做第一次初始化(實體化) } //創建兩個方法分別用來獲取陣列(數組)中的內容 及 設值 public T GetItem(int index)// ...