COM オブジェクトのインスタンスを作成し、オブジェクトのDataReadyプロパティを継続的にポーリングして、新しいデータがあるかどうかを確認する VBA アプリケーションがあります。新しいデータが利用可能になると、データがスプレッドシートに貼り付けられます。問題は、このマクロ (vba サブルーチン) が継続的に実行され、これにより Excel の速度が低下し、プロセスの実行中にコンピューターが使用できなくなることです。このプロセスを別のスレッドで開始したり、.NET バックグラウンド ワーカーのようなことをしたりする方法はありますか?
私の2つの試みは、このようなwhileループを使用することでした..
While(True)
If(myObject.DataReady)
Do some stuff here
End If
WEnd
そして、これ
Sub GrabNewPoint()
If (myModule.NewDataReady_Receiver = True) Then
Do some stuff here...
End If
If (StopTest = False) Then
NextTime = Now() + TimeValue("00:00:20")
Application.OnTime NextTime, "GrabNewPoint"
End If
2 番目の試みは間違いなくうまく機能しますが、それでもかなり遅くなります。より良い解決策はありますか?
私の COM オブジェクトは、C# で作成したクラス ライブラリです。データの準備ができたときにクラス ライブラリで発生するイベントを追加できますが、VBA プログラムでこれらのイベントをリッスンするにはどうすればよいですか?