2012-12-28 34 views
1

我的winform上有一個進度條,它是從CopyFileEx調用的回調方法更新的。進度條不會更新,直到它是100%

問題是進度條不會更新,直到它達到100%。

進度條百分比是從後臺工作人員更新的,它基於複製的字節量與所有文件的總字節數之比。

我的代碼來計算的字節數是(我不認爲這裏有任何問題)

CopyFileCallbackAction myCallback(FileInfo source, FileInfo destination, object state, long totalFileSize, long totalBytesTransferred) 
{ 
    double dProgress = (totalBytesTransferred/byteCount) * 100.0; 
    backupWorker.ReportProgress((int)dProgress); 
    return CopyFileCallbackAction.Continue; 
} 

如果我表現出與totalBytesTransferredbyteCount值的消息框,並執行計算我自己它工作正常(截斷小數點後的任何數字 - 因爲它被投到int),我得到的百分比。

由於某些原因,它傳遞到我的進度條時不起作用,直到它爲100%,然後它在一起完成。

任何想法?

+0

您是否處理了ProgressChanged事件?在Progress改變的事件中,您需要設置UI進度 – Tilak

+0

您是否已將'WorkerReportsProgress'設置爲true?是阻塞UI線程的東西,還是隻是沒有更新?你在'ProgressChanged'處理程序中遇到異常嗎? – Servy

+0

是的,我已經使用'WorkerReportsProgress = true'設置了事件,爲了清晰起見,我沒有包括這些。 –

回答

9

你正在做整數(實際上是long)除法,它返回0

您需要投一個操作數到double

+0

或使100.0作爲第一個操作數 – Tilak

+0

@Tilak如果你這樣做,你需要刪除parens。 – Servy

+0

完美,謝謝。我會在3分鐘內接受:) –