I’m working on a class plugin based on an open source library. This library implements the possibility to callback a function returning some parameters. I use this parameters to update controls. Calling a shared method of Xojo works fine but I don’t see how I could periodically update the controls without using the very unliked App.DoEvents. I did some tests with Thread without success.
Does someone could give me some lights. I’m completely stuck.
Be a rebel - use App.DoEvents().
Or, if you’re interested in a safer mechanism and threading, use a one-shot timer that you fire from the thread. You can create the Timer in code:
tmShowStandabyTimer to your window’s properties
In the window Constructor, add:
tmShowStandbySheet = New Timer
tmShowStandbySheet.Mode = 0
tmShowStandbySheet.Period = 1
AddHandler tmShowStandbySheet.Action, AddressOf ShowStandbySheet
Create a Method named “
ShowStandbySheet(Sender As Timer)” and add your UI update code calls
In the Thread, when you need to update the UI, fire the Timer by setting its mode to 1:
tmShowStandabyTimer.Mode = 1
Thanks for the advice. In fact this is the former method used to update UI from a thread ? I also gave a try with the new one (AddUserInterfaceUpdate-UserInterfaceUpdate) unsuccessfully. The main issue is that shared methods cannot access instance properties. From my knowledge I have no choice but to use a shared method if I want to be called back from the plugin.