4
A
回答
5
由於WriteAllBytes
是一種同步方法,因此您無法對操作進行任何操作,直到它完成。
你需要做的是有一個像WriteAllBytes這樣的方法,但是寫成異步的,比如http://msdn.microsoft.com/en-AU/library/jj155757.aspx。您可以每隔一段時間讓異步方法停止並將其進度報告給GUI,因爲它分開運行。
8
編號
您需要使用循環寫入塊中的字節。像下面的東西應該讓你開始。請注意,這需要在後臺線程中運行。我在使用WinForms,你可以使用BackgroundWorker
。
using(var stream = new FileStream(...))
using(var writer = new BinaryWriter(stream)) {
var bytesLeft = array.Length; // assuming array is an array of bytes
var bytesWritten = 0;
while(bytesLeft > 0) {
var chunkSize = Math.Min(64, bytesLeft);
writer.WriteBytes(array, bytesWritten, chunkSize);
bytesWritten += chunkSize;
bytesLeft -= chunkSize;
// notify progressbar (assuming you're using a background worker)
backgroundWorker.ReportProgress(bytesWritten * 100/array.Length);
}
}
編輯:正如Patashi在下面指出的,你也可以在你的任務中等待。我認爲我的方法非常簡單,並且不需要任何額外的線程資源(除了需要執行操作的一個後臺線程外)。這是傳統方式,運作良好。
相關問題
- 1. Selenium一步一步學習
- 2. C#Winform - 學習異步/等待 - 如何更新進度條
- 3. 第一步學習WEBGL中的學習矩陣
- 4. 如何學習MDX
- 5. 如何學習objectArx?
- 6. 如何學習modelica?
- 7. 如何學習C++
- 8. 如何學習EXTJS
- 9. 如何學習Zend
- 10. 如何學習SOAP?
- 11. 如何學習SEO?
- 12. 如何學習ExpressJS?
- 13. 如何學習PySide?
- 14. 如何學習agda
- 15. Tkinter - 進口和學習
- 16. 進度4GL基礎學習
- 17. MIPs多麼有用,值得在大學二年級進一步學習嗎?
- 18. 如何學習計算機科學
- 19. 第一步學習C lang。與MAC
- 20. 需要幫助學習跑步時間
- 21. 開始學習ASP.NET的異步編碼
- 22. 下一步學習opengl es android?
- 23. 機器學習 - 培訓步驟
- 24. 如何學習Java5或Java6?
- 25. 如何學習MFC C++ 2013
- 26. 學習如何使用Subversion
- 27. 如何學習CakePHP的
- 28. 如何開始學習hadoop
- 29. 如何學習調試?
- 30. 如何學習silverlight 4.0
不,您需要使用['FileStream.Write'](例如http://msdn.microsoft.com/en-us/library/system.io.filestream.write.aspx)製作自己的函數。 – Blorgbeard 2013-03-17 22:46:44