傳遞函數的進度幾天前,我已經問了一個關於how to constantly check the progress of a function的問題,但我還沒有收到任何答案,所以我試圖找到一種方法來做到這一點,所以我做了在我的函數ref參數,他們還給我要處理的項目總數和當前處理項目
最好是通過參考值
public void SaveInfoToDBFromFiles(string path,ref int TotalItems, ref int CurrentItem)
{
initialize the values;
do some stuff;
TotalItems=TotalNumberOfFiles;
foreach(file in path)
{
CurrentItem++;
}
}
,並在我的UI,的WinForms,我讓一個線程我有一個進度條,顯示了我函數的當前進度和通過獲取CurrentItem值來更新進度條的計時器,
System.Threading.Thread th = new System.Threading.Thread(() => SaveInfoToDBFromFiles(path,ref Total,ref Current));
th.Start();
progressBar1.Value=Total;
timer1.Start();
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value = Current;
}
它完美,但即時知道是否是好主意或沒有?
我認爲不是 - 基本上 - 這不是一個線程安全的解決方案。 – 2014-08-31 11:56:13