Page 1 of 1

Chạy hàm đa luồng có tham số [help]

Posted: Sun 27/05/2018 10:19 pm
by UFO
Làm sao để sử dụng hàm RUN trong đa luồng được vậy các bác, nếu chạy thế kia thì khi nào Call Run(Label1, 0) chạy xong nó mới chạy cái thứ 2 :-<

  1. Private Sub Run(lb As Label, i As Long)
  2.     Do While True
  3.         i = i + 1
  4.         lb.Caption = i
  5.  
  6.         Sleep 200
  7.         DoEvents
  8.     Loop
  9. End Sub
  10.  
  11. Private Sub Command1_Click()
  12.     Call Run(Label1, 0) '
  13.     Call Run(Label2, 0)
  14. End Sub

Re: Chạy hàm đa luồng có tham số [help]

Posted: Mon 28/05/2018 4:37 pm
by truongphu
UFO wrote:Private Sub Command1_Click()

Trong Sub hay function, chỉ chạy trên 1 luồng. Các lệnh tuần tự thực hiện
Và thông thường, khi Sub hay function nào đó đang thi hành, ngừng các sub khác

UFO wrote:Do While True
i = i + 1


Đây là lệnh vô tận (khoảng hơn 2 tỉ) làm sao đến lượt Call Run(Label2)?


UFO wrote:khi nào Call Run(Label1, 0) chạy xong nó mới chạy cái thứ 2


1- Bạn cho điều kiện vd i=20 thì ngừng:

Code: Select all

Do
...
Loop until i =20


2- Muốn cùng chạy (đa luồng), bạn tham khảo:
http://www.caulacbovb.com/forum/viewtop ... 82#p155082
DCS - Mã nguồn VB6 Multithreading (đa nhiệm cho vb6) - Dark.Cosmos

Re: Chạy hàm đa luồng có tham số [help]

Posted: Tue 29/05/2018 3:06 pm
by UFO
Vâng cảm ơn bác trường phu đã trả lời, e muốn cho nó chạy đa luồng mà ko biết vb6 làm thế nào cả
code bên c# của e, ko biết bên vb6 convert sao nữa bác
  1.         Thread[] threadsArray = new Thread[100];
  2.         public class Users
  3.         {
  4.             public Label lb;
  5.             public void Run()
  6.             {
  7.                 for (int i = 1; i <= 100000; i++)
  8.                 {
  9.                     lb.Text = i.ToString();
  10.                     //Thread.Sleep(100);
  11.                 }
  12.             }
  13.         }
  14.  
  15.         private void button1_Click(object sender, EventArgs e)
  16.         {
  17.             Users user = new Users();
  18.             user.lb = label1;
  19.             threadsArray[1] = new Thread(user.Run);
  20.             threadsArray[1].IsBackground = true;
  21.             threadsArray[1].Start();
  22.            
  23.             user.lb = label2;
  24.             threadsArray[2] = new Thread(user.Run);
  25.             threadsArray[2].IsBackground = true;
  26.             threadsArray[2].Start();
  27.         }
  28.