ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 3722|ตอบกลับ: 3

อยากทราบวิธีการทำ BackgroundWorker Load Value vb.net

[คัดลอกลิงก์]

4

กระทู้

11

โพสต์

212

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
212

อยากทราบวิธีการทำ BackgroundWorker Load Value แสดงสถานะการโหลดของข้อมูลที่ Query ออกมาจากDatabase

ขอบพระคุณมากครับ

308

กระทู้

498

โพสต์

5973

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5973
โพสต์ 2018-11-13 12:43:41 | ดูโพสต์ทั้งหมด

ปกติผมไม่ได้ใช้หรอกครับ เพราะการโหลดข้อมูลมันค่อนข้างจะเร็วอยู่แล้ว แต่ไม่เป็นไร ก็เลยเขียนโค้ดแสดงการเปรียบเทียบระหว่างการใช้ กับไม่ใช้ Background Worker มาให้ได้ดูกัน ...


แบบแสดงผลธรรมดา


แบบใช้ Background Worker

ใช้ Control ...
- BackgroundWorker1 (อยู่ในกลุ่มเครื่องมือ Toolbox)
- TextBox1

- Button1 และ Button2
- ProgressBar1
- lblProgress (แสดงจำนวน %)

โค้ดโปรแกรม ...
  1. Public Class frmBackgroundWorker

  2.     Private Sub frmBackgroundWorker_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  3.         TextBox1.Text = 100
  4.         TextBox1.MaxLength = 3
  5.         '// Initialized
  6.         With BackgroundWorker1
  7.             .WorkerReportsProgress = True
  8.             .WorkerSupportsCancellation = True
  9.         End With
  10.         '//
  11.         Control.CheckForIllegalCrossThreadCalls = False
  12.     End Sub

  13.     '// Background Worker Process
  14.     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  15.         If Trim(TextBox1.Text) = "" Then Return
  16.         '//
  17.         BackgroundWorker1.RunWorkerAsync()
  18.     End Sub

  19.     '// BackgroundWorker - Events DoWork
  20.     Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  21.         For i = 1 To 100
  22.             TextBox1.Text = i
  23.             BackgroundWorker1.ReportProgress(i)
  24.             Threading.Thread.Sleep(100)
  25.             lblProgress.Text = ProgressBar1.Value & "%"
  26.         Next
  27.     End Sub

  28.     '// When change occurs.
  29.     Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
  30.         Me.ProgressBar1.Value = e.ProgressPercentage
  31.     End Sub

  32.     '// When finished.
  33.     Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
  34.         MessageBox.Show("Done Complete.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Information)
  35.     End Sub

  36.     '// Normal Process
  37.     Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
  38.         If Trim(TextBox1.Text) = "" Then Return
  39.         '//
  40.         Dim Max As Integer = 100
  41.         For i = 1 To Max
  42.             TextBox1.Text = i
  43.             lblProgress.Text = i.ToString & "%"
  44.             ProgressBar1.Value = (100 / Max) * i
  45.             Threading.Thread.Sleep(100)
  46.         Next
  47.     End Sub

  48.     ' / --------------------------------------------------------------------------
  49.     ' / Get numeric only.
  50.     Function CheckDigitOnly(ByVal index As Integer) As Boolean
  51.         Select Case index
  52.             Case 48 To 57 ' 0 - 9
  53.                 CheckDigitOnly = False
  54.             Case 8, 13 ' Backspace = 8, Enter = 13
  55.                 CheckDigitOnly = False
  56.             Case Else
  57.                 CheckDigitOnly = True
  58.         End Select
  59.     End Function

  60.     Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
  61.         If e.KeyChar = Chr(13) Then
  62.             e.Handled = True
  63.             Call Button1_Click(sender, e)
  64.         Else
  65.             e.Handled = CheckDigitOnly(Asc(e.KeyChar))
  66.         End If
  67.     End Sub
  68. End Class
คัดลอกไปที่คลิปบอร์ด



สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

4

กระทู้

11

โพสต์

212

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
212
 เจ้าของ| โพสต์ 2018-11-13 21:20:27 | ดูโพสต์ทั้งหมด

ขอบคุณมากๆเลยครับบผม

308

กระทู้

498

โพสต์

5973

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5973
โพสต์ 2018-11-14 09:54:49 | ดูโพสต์ทั้งหมด

dreamkarifha ตอบกลับเมื่อ 2018-11-13 21:20
ขอบคุณมากๆเลยครับบผม

ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ครับ ... http://www.g2gnet.com/webboard/f ... &extra=page%3D1
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-3-29 21:08 , Processed in 0.103928 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้