is it possible running one function after another function with 100ms delay in separate thread. i want to make a function to changing one cell in excel and run another function by 100ms delay by a separate thread in visual basic 6 tnx
4 に答える
You can use API
In your delcarations section add this:
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
To use it:
Sleep 100 ' to sleep for 0.1 second
ActiveX exeを使用して、VB6でマルチスレッドを実行することができます。これらは「アウトプロセス」であるため、ロードしてすぐに戻すことができます。これをやってから何年も経ちますが、タイマーを使ってクラスをロードしてすぐに戻って、クラスで作業を続けられるようにしたのではないかと思います。
しかし、この種のアプローチは恐ろしいものです-あらゆる種類の賢明な方法でそれを管理することは悪夢です。
あなたにとってはるかに良いオプションは、VB.Netであなたが望むものを書くことであり(私が思うにExpressバージョンでそれを行うのは問題ないはずです)、COM互換になるようにビルドするようにアセンブリを設定します。次に、VBAなどでこの機能を参照できます。
It's possible by creating an ActiveX exe. See wqw's answer here, To use thread in programming in vb6. The 100ms second delay will be ~100ms delay. Depending on how accurate you want youe delay to be you can use the native VB timer accurate to somewhere arounf 10ms, or for higher resolution you can use a multi-media timer (makes it difficult to debug), or get a control that implements a high resolution timer.
ActiveX DLL instances also run on their own thread, but all in one process. So, you don't need the additional overhead of interprocess communication. Of course, Excel would run in a separate process anyway.