Cách triển khai đa luồng trong hình ảnh cơ bản 6.0. Nó sẽ là tuyệt vời nếu ai đó có thể đưa ra một ví dụ.Đa luồng trong hình ảnh cơ bản 6.0
Trả lời
VB6 không phải là môi trường thực sự tốt cho các ứng dụng đa luồng. Không có hỗ trợ out-of-the-box, bạn cần phải nghiên cứu kỹ các chức năng tiêu chuẩn WinAPI. Hãy xem bài viết này, trong đó cung cấp một mẫu khá toàn diện:
Mở một số dự án tôi đã thực hiện xử lý không đồng bộ trong VB6 sử dụng nhiều quy trình. Về cơ bản có một chuỗi công nhân trong một dự án exe đang hoạt động tách biệt với quy trình chính. Nhân viên exe sau đó có thể được truyền bất kỳ dữ liệu nào mà nó cần và bắt đầu, nâng cao một sự kiện để nói rằng nó đã kết thúc hoặc có dữ liệu cho quá trình chính.
Đó là một tài nguyên đói hơn (một quá trình thêm chứ không phải là một chủ đề) nhưng VB6 đang chạy trong một căn hộ đơn luồng và không có bất kỳ hỗ trợ xây dựng để bắt đầu chủ đề mới.
Nếu bạn thực sự cần phải có nhiều luồng trong một quy trình, tôi khuyên bạn nên xem xét sử dụng .net hoặc VC6 thay vì VB6.
Nếu sự cố bạn đang cố giải quyết là một phép tính dài và bạn muốn giữ cho giao diện người dùng phản hồi, thì một khả năng là thường xuyên gọi hàm DoEvents
trong tính toán dài của bạn. Bằng cách này, chương trình của bạn có thể xử lý bất kỳ tin nhắn Windows nào và do đó giao diện người dùng sẽ trả lời các lệnh của người dùng. Bạn cũng có thể thiết lập nút Hủy để báo hiệu quá trình của bạn mà nó cần phải kết thúc.
Nếu bạn làm điều này, bạn sẽ cần phải cẩn thận để vô hiệu hóa bất kỳ điều khiển nào có thể gây ra sự cố, chẳng hạn như chạy quy trình dài lần thứ hai sau khi bắt đầu.
Bạn có thể sử dụng Bộ công cụ biểu mẫu tương tác 2.0 để đa luồng trong VB6. Bộ công cụ cho phép bạn tận dụng các tính năng .NET mà không bị buộc phải nâng cấp. Vì vậy, bạn cũng có thể sử dụng .NET User Controls như điều khiển ActiveX trong VB6.