自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作

開(kāi)發(fā) 后端
C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作具體的是如何的呢?C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作需要注意什么呢?那么本文就向你介紹相關(guān)的內(nèi)容。

C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作

許多種類(lèi)的應(yīng)用程序都需要長(zhǎng)時(shí)間操作,比如:執(zhí)行一個(gè)打印任務(wù),請(qǐng)求一個(gè) Web Service 調(diào)用等。用戶(hù)在這種情況下一般會(huì)去轉(zhuǎn)移做其他事情來(lái)等待任務(wù)的完成,同時(shí)還希望隨時(shí)可以監(jiān)控任務(wù)的執(zhí)行進(jìn)度。

阻塞方式執(zhí)行 

C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作圖1

下面的代碼片斷示例了當(dāng)長(zhǎng)任務(wù)執(zhí)行時(shí)用戶(hù)界面是如何被更新的。

  1. // 顯示進(jìn)度條  ,C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作
  2. void ShowProgress( int totalStep, int currentStep )  
  3. {  
  4. _Progress.Maximum = totalStep;  
  5. _Progress.Value = currentStep;  
  6. }  
  7.  
  8. // 執(zhí)行任務(wù)  
  9. void RunTask( int seconds )  
  10. {  
  11. // 每 1 / 4 秒 顯示進(jìn)度一次  
  12. forint i = 0; i < seconds * 4; i++ )  
  13. {  
  14. Thread.Sleep( 250 );  
  15.  
  16. // 顯示進(jìn)度條 ,C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作 
  17. ShowProgress( seconds * 4, i + 1 );  
  18. }  
  19. }  
  20.  
  21. private void _btnRun_Click(   
  22.  
  23. object sender, System.EventArgs e )  
  24. {  
  25. RunTask( Convert.ToInt32( _txtSecond.Value ) );  

當(dāng)我們運(yùn)行上面的程序,在整個(gè)長(zhǎng)任務(wù)的過(guò)程中,沒(méi)有出現(xiàn)任何問(wèn)題。這樣就真的沒(méi)有問(wèn)題了嗎?當(dāng)我們切換應(yīng)用程序去做其他事情后再切換回來(lái),問(wèn)題就發(fā)生了!主窗體就會(huì)出現(xiàn)如下情況:

運(yùn)行結(jié)果 

C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作圖2

這個(gè)問(wèn)題當(dāng)然會(huì)發(fā)生,因?yàn)槲覀儸F(xiàn)在的應(yīng)用程序是單線(xiàn)程的,因此,當(dāng)線(xiàn)程執(zhí)行長(zhǎng)任務(wù)時(shí),它同時(shí)也就不能重畫(huà)用戶(hù)界面了。

為什么在我們切換應(yīng)用程序后,問(wèn)題才發(fā)生呢?這是因?yàn)楫?dāng)你切換當(dāng)前應(yīng)用程序到后臺(tái)再切換回前臺(tái)時(shí),我們需要重畫(huà)整個(gè)用戶(hù)界面。但是應(yīng)用程序正在執(zhí)行長(zhǎng)任務(wù),根本沒(méi)有時(shí)間處理用戶(hù)界面的重畫(huà),問(wèn)題就會(huì)發(fā)生。

如何解決問(wèn)題呢?我們需要將長(zhǎng)任務(wù)放在后臺(tái)運(yùn)行,把用戶(hù)界面線(xiàn)程解放出來(lái),因此我們需要另外一個(gè)線(xiàn)程。

C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作的基本情況就向你介紹到這里,希望對(duì)你學(xué)習(xí)和了解C#多線(xiàn)程控制進(jìn)度條之長(zhǎng)任務(wù)操作有所幫助。

【編輯推薦】

  1. C#進(jìn)度條使用之多線(xiàn)程應(yīng)用淺析
  2. C#進(jìn)度條實(shí)現(xiàn)之異步實(shí)例淺析
  3. C#進(jìn)度條實(shí)現(xiàn)實(shí)例
  4. C#進(jìn)度條之控制臺(tái)顯示淺析
  5. C# WinForm進(jìn)度條實(shí)現(xiàn)淺析
責(zé)任編輯:仲衡 來(lái)源: 博客園
相關(guān)推薦

2009-08-17 16:41:03

C#多線(xiàn)程控制

2009-08-17 16:56:51

C#多線(xiàn)程控制進(jìn)度條

2009-08-17 16:49:46

C#多線(xiàn)程控制

2009-08-17 14:08:33

C#進(jìn)度條使用

2009-08-17 15:05:41

C#進(jìn)度條

2009-08-28 16:51:32

C#線(xiàn)程控制

2009-08-17 15:48:47

C# WinForm進(jìn)

2009-08-18 09:49:00

C# listview

2009-08-17 14:41:47

C#進(jìn)度條實(shí)現(xiàn)

2009-08-17 17:15:48

C# 進(jìn)度條效果

2009-08-17 14:36:15

C#進(jìn)度條實(shí)現(xiàn)

2009-08-17 13:56:29

C#進(jìn)度條的使用

2011-07-05 15:16:00

QT 進(jìn)度條

2009-08-27 14:01:41

C#進(jìn)度條

2015-07-31 11:19:43

數(shù)字進(jìn)度條源碼

2021-09-09 07:16:00

C#多線(xiàn)程開(kāi)發(fā)

2009-09-04 10:42:56

C#流程控制語(yǔ)句

2024-08-06 14:29:37

2009-08-12 18:04:44

編寫(xiě)C#多線(xiàn)程

2011-06-24 11:12:39

Qt 多線(xiàn)程 線(xiàn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)