C# 基礎知識系列- 17 小工具優化
阿新 • • 發佈:2020-05-08
# 0. 前言
不知道有沒有動手能力強的小夥伴照著上一篇的內容寫過程式呢?如果有的話,應該會在使用的時候發現以下幾個問題:
1. 每次啟動都需要經過漫長的時間去遍歷磁盤裡的檔案目錄
2. 因為資料是用的字典儲存的,所以會消耗大量的記憶體空間
3. 不能多次查詢
現在我們就針對這些問題,讓我們的小工具實用起來。
# 1. 分析與實現
在動手之前,我們先分析一下問題。在實際開發之前,無論是接到什麼需求都要先仔細分析一下,確定好方案再動手方為開發的正道。嗯,沒毛病。因為開發過程中跟產品對線、跟客戶對線要佔整個專案的一半左右時間。好了,不廢話了。繼續:
遍歷檔案目錄的時間過長,那麼我們是不是可以用非同步併發去遍歷呢?
資料用字典儲存會消耗記憶體空間,那麼我們是不是可以用其他的方式儲存呢?
不能多次查詢,是不是可以使用迴圈,然後設定一個退出條件?
## 1.1 C#的非同步/併發實現
在C#裡,非同步和併發的實現是依據執行緒、任務來實現的。在之前《C# 基礎知識系列- 12 任務和多執行緒》裡大概介紹了一下執行緒和任務,我們知道執行緒本身是沒法返回資料的,它與主執行緒進行資料互動的過程十分需要注意執行緒安全。而任務可以返回資料,不需要像執行緒一樣小心翼翼地與主執行緒進行資料互動。任務有一個優點,它比執行緒更輕量,所以在當前環境下我們可以試試任務。
當然,執行緒也有優點,那就是執行緒的執行環境相對更封閉一點,它能完成一個長的大型運算。
那麼繼續上一篇的內容,先引用 :
```c#
using System.Threading.Tasks;
```
先提取一組根據可列舉目錄集合建立任務組並取得結果的方法:
```c#
public static Dictionary