2008-09-21 84 views

回答

14

對於多線程應用程序,VB6並不是一個非常好的環境。沒有開箱即用的支持,您需要深入研究標準WinAPI函數。看看這篇文章,它提供了相當全面的示例:

http://www.freevbcode.com/ShowCode.Asp?ID=1287

9

幾個項目我一直在使用多個進程在VB6中實現異步處理。基本上在與主進程分離的活動exe項目中有一個工作線程。然後worker exe可以傳遞任何需要和開始的數據,提高事件的完成速度或主流程的數據。

這是一個更多的資源飢餓(一個額外的過程,而不是一個線程),但VB6運行在一個單線程的公寓,並沒有任何內置的支持啓動新線程。

如果你真的需要在一個進程中有多個線程,我建議你使用.net或VC6而不是VB6。

2

如果您試圖解決的問題是長時間計算,並且您希望保持界面響應,那麼有一種可能性是在長時間計算中經常調用DoEvents函數。這樣,您的程序就可以處理任何Windows消息,因此UI將響應用戶命令。您還可以設置一個取消按鈕來指示您的流程需要結束。

如果你這樣做,那麼你需要小心地禁用任何可能導致問題的控件,例如在啓動後第二次運行長進程。

0

您可以在VB6中使用Interop Forms Toolkit 2.0進行多線程處理。工具包 允許您利用.NET功能,而不必被強制升級。因此,您也可以使用.NET用戶控件作爲VB6中的ActiveX控件。