You don't need to call run() on the return value. Just call queueCallback() -
the system will take care of running it for you later. If you call run()
yourself, it still gets executed on the background thread.
On Nov 21, 2011, at 8:45 AM, Jérôme Serré wrote:
> I wrote ProcessClass:
> public void run() {
> bla bla bla
>
> ApplicationContext.queueCallback(myChart).run();
>
> }
>
> My chart implements runnable
> And
> myChart.run() {
> ((ValueSeries<Candlestick>)this.getChartData().get(0)).add(recordToCandlestick(record));
> }
>
> Is it correct ?
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>
>
> De : Greg Brown [mailto:[email protected]]
> Envoyé : lundi 21 novembre 2011 14:04
> À : [email protected]
> Objet : Re: How to refresh a HighLowChartView
>
> It sounds like you might still be updating the UI from the background thread.
> Have you updated your code to use ApplicationContext#queueCallback()?
>
> On Nov 19, 2011, at 3:56 AM, Jérôme Serré wrote:
>
>
> Ok, I didn’t know. It works. Thank you Greg.
> But… there is a but J
> For the changes to appear on the chart I must "move" by hand. How can I get
> it to refresh automatically ?
>
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>
>
> De : Greg Brown [mailto:[email protected]]
> Envoyé : vendredi 18 novembre 2011 23:11
> À : [email protected]
> Objet : Re: How to refresh a HighLowChartView
>
> You can't call any method that will update the UI from a background thread.
> Most UI toolkits have a similar restriction.
>
> On Nov 18, 2011, at 5:03 PM, Jérôme Serré wrote:
>
>
>
> Correct. In fact in the run method (daemon) I add a “Record” in a pivot
> arrayList and my Chart Class (and some others) listen this event :
> public void itemInserted(List<T> list, int index) {
> “Update ChartData”
> }
> Ok, I think, I cannot use the event ?
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>
>
> De : Greg Brown [mailto:[email protected]]
> Envoyé : vendredi 18 novembre 2011 21:17
> À : [email protected]
> Objet : Re: How to refresh a HighLowChartView
>
> I assume you have an implementation of Runnable that performs the background
> action of your thread, correct? When the thread's run() method completes, you
> need to call ApplicationContext#queueCallback() with a new Runnable that
> updates your UI.
>
>
> On Nov 18, 2011, at 2:59 PM, Jérôme Serré wrote:
>
>
>
>
> I’m really sorry but i don’t understand.
>
> public class Test implements Application {
> **** some components ***
> final Thread t = ExtractProcess.getProcess(resolution, data, chart);
> ApplicationContext.queueCallback(t).run();
>
>
> The thread is running but none graphics elements are visible on ihm !
>
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>
>
> De : Greg Brown [mailto:[email protected]]
> Envoyé : vendredi 18 novembre 2011 19:29
> À : [email protected]
> Objet : Re: How to refresh a HighLowChartView
>
> I tested without thread and it works, I use Thread not TaskAdapter or
> ApplicationContext#queueCallback()
> May I keep Thread and use ApplicationContext#queueCallback()
>
> Yes.
>
>
>
>
>
> And How to use it ?
>
> Just put the code you want to run on the UI thread in the run() method (same
> as SwingUtilities#invokeLater() in Swing).
>
>
>
>
>
>