2012-11-15 133 views
0

是否有可能在單獨的線程中以100ms延遲運行一個功能和另一個功能。 我想打一個函數來改變Excel中一個小區中以延時100ms由單獨的線程在Visual Basic 6 TNX運行另一個功能以100ms延遲運行一個功能(多線程 - VB6 - excel)

+0

VB6不支持線程。創建一個100毫秒的定時器肯定不是問題。 –

+0

似乎vb不支持線程,但計時器並不重要,因爲時間在線程中很重要 – sadati

+5

愛因斯坦不會同意,時間和事情很重要。你想說什麼? –

回答

1

您可以使用API​​

在你delcarations部分補充一點:

私人聲明子睡眠庫 「KERNEL32.DLL」(BYVAL dwMilliseconds長)

要使用它:

睡眠100'睡眠0.1秒

+0

它很有用 反正tnx – sadati

0

它通過創建一個ActiveX EXE是可能的。在這裏看到wqw的答案,To use thread in programming in vb6。 100ms的延遲時間將延遲約100ms。根據你想要延遲的精度,你可以使用本地VB定時器精確到10ms的某個地方,或者爲了獲得更高的分辨率,你可以使用多媒體定時器(很難調試),或者獲得一個實現高分辨率定時器。

+0

哇,我看到了@Beaner – sadati

0

使用ActiveX exes可以在VB6中執行多線程。這些是「Out of process」,因此可以加載並立即返回。自從我這樣做了很多年,但我想我可能已經使用了一個計時器來讓我加載課程並立即返回,然後讓課程繼續進行。

這種方法雖然可怕 - 以任何明智的方式管理它都是一場噩夢。

對你而言,一個更好的選擇是在VB.Net中編寫你想要的東西(你可以在我認爲的Express版本中完成),然後將程序集設置爲COM兼容。然後你可以在你的VBA中引用這個功能。

+0

它很好thx – sadati

0

ActiveX DLL實例也在其自己的線程上運行,但都在一個進程中運行。所以,你不需要額外的進程間通信開銷。當然,Excel無論如何都會在一個單獨的過程中運行。