我用下面的代碼獲取文件大小的目錄裏面 並把它在Label1
:「對於每一個」循環:在Vb.net
For Each foundFile As String In My.Computer.FileSystem.GetFiles(_
"\windows",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly,_
"*.*")
Dim filesizelabel As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(foundFile)
Label1.Text = Label1.Text + filesizelabel.Length
Next
的問題是,我有每個循環超過50個(系統清理應用程序)。
當我運行我的應用程序凍結,直至循環完成,即使我運行一個循環的循環。
是否有解決方案,以使其顯示當前文件的名稱?我想這爲好,但它也凍結了我的應用程序:
label2.text = foundfile
應用程序沒有任何響應點擊,直到它完成了循環。它顯示了Label1
中的大小以及Label2
中的最後一個掃描文件。這也響應的應用程序:
system.threading.thread.sleep(100)
有沒有替代的foreach或來解決這個問題的解決方案?
我不熟悉vb.net的語法,但你可能想在新線程而不是UI線程上啓動循環,所以它不會阻塞。 – overloading
我該怎麼做(在一堂課或一個模塊中......) –
我腦海中有兩件事情:1.舊的'BackgroundWorker'。 2.新的「異步」/「等待」關鍵字。 Google針對這些條款。 –