日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

VB.NET读取数据库时多线程显示进度条

發布時間:2023/12/14 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB.NET读取数据库时多线程显示进度条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VB.net通過ADO.NET連接數據庫,或執行查詢語句等,都需要等待一段時間,這段時間界面無法操作,程序顯示出假死現象,無任何響應,為了不讓用戶誤認為電腦死機,需要顯示一個進度條來提示用戶。但是問題在于,ADO.NET(包括其它數據庫引擎)在執行指令時并不返回實時狀態信息,只有在命令執行完畢后,才返回結果。因此,需要通過VB.NET多線程技術,在ADO.NET執行命令期間,顯示一個不斷變化的進度條,這個進度條是一個單獨窗口:

窗體命名為TaskProgress,放置一個ProgressBar控件命名為ProgressIndicator,代碼如下:

Public Class TaskProgressPrivate Sub TaskProgress_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadProgressIndicator.Maximum = 100ProgressIndicator.Minimum = 0ProgressIndicator.MarqueeAnimationSpeed = 30ProgressIndicator.Style = ProgressBarStyle.MarqueeEnd SubEnd Class

主窗口增加BackgroundWorker組件,此類組件就是用于多線程編程應用的,將其WorkerSupportsCancellation屬性設為真(TRUE),這個屬性決定組件是否響應主線程的中斷,如圖:

屬性設置:

代碼如下:

#Region "---------------再開一個線程顯示進度條---------------" Private Sub waitstart()Me.Cursor = Cursors.WaitCursor '光標為沙漏BackgroundWorker1.RunWorkerAsync() '開啟多線程顯示進度條End SubPrivate Sub waitend()BackgroundWorker1.CancelAsync() '停止多線程Me.Cursor = Cursors.Default '光標為箭頭End SubPrivate Sub BackgroundWorker1_DoWork1(sender As Object, _e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWorkDim worker As System.ComponentModel.BackgroundWorker = _CType(sender, System.ComponentModel.BackgroundWorker)' Assign the result of the computation' to the Result property of the DoWorkEventArgs' object. This is will be available to the ' RunWorkerCompleted eventhandler.showProgress(worker)End SubPrivate Sub showProgress(ByVal worker As System.ComponentModel.BackgroundWorker)Dim progressForm As New TaskProgress()progressForm.Show()' Refresh causes an instant (non-posted) display of the label.progressForm.Refresh()' Slowly increment the progress bar.While Not worker.CancellationPendingIf progressForm.ProgressIndicator.Value = 100 ThenprogressForm.ProgressIndicator.Value = 0ElseprogressForm.ProgressIndicator.Value += 10End If' 50 millisecond delaySystem.Threading.Thread.Sleep(50)End WhileprogressForm.ProgressIndicator.MarqueeAnimationSpeed = 0' Remove the form after the "task" finishes.progressForm.Hide()progressForm.Dispose()End Sub#End Region

打開數據庫之前,先使用 waitstart 過程顯示進度條,數據庫讀取完畢,再用 waitend 停止顯示,返回界面。

總結

以上是生活随笔為你收集整理的VB.NET读取数据库时多线程显示进度条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。