Try using TaskAdpater<Void> - TaskSequence extends Task<Void> (it doesn't 
return a value). The return values are provided by the tasks in the sequence, 
which you can access via the get() method when the task is complete.

On Feb 24, 2010, at 9:14 AM, Mathias Versichele wrote:

> Ok, I'm trying my luck with the TaskSequence class. I'm running into another 
> problem though... After I've added my tasks, I get a problem with this line 
> of code:
> 
> ts.execute(ta);
> 
> ts is an instance of TaskSequence
> ta is an instance of TaskAdapter<String>
> 
> I get this error compilation error in eclipse: 
> "The method execute(TaskListener<Void>) in the type Task<Void> is not 
> applicable for the 
>  arguments (TaskAdapter<String>)"
> 
> I know this has something to do with the Void type, where there should be 
> String but I dont know what is causing this
> 
> Regards
> 
> 2010/2/24 Greg Brown <[email protected]>
> You may find the TaskGroup or TaskSequence classes helpful. They allow you to 
> coordinate multiple running tasks. TaskGroup runs multiple tasks in parallel, 
> and TaskSequence runs them in series.
> 
> On Feb 24, 2010, at 8:31 AM, Mathias Versichele wrote:
> 
>> I'm parsing files in a directory. Logically speaking, it's a task consisting 
>> of synchronized subtasks but I thought that would make it even more complex 
>> for me :-)
>> 
>> 2010/2/24 Greg Brown <[email protected]>
>> Tasks are a great way to run a background process. I am wondering why are 
>> you creating and starting them in a loop? Are you trying to execute more 
>> than one?
>> 
>> On Feb 24, 2010, at 8:19 AM, Mathias Versichele wrote:
>> 
>> > Ok, this might be the most difficult question until now from me 
>> > (especially since I can't seem to fully understand synchronization). I'm 
>> > using a Task class to run a background task asynchronously, so that the UI 
>> > stays responsive and my activityMeter keeps me informed about the progress 
>> > of the task. The problem now is, that somewhere I do this:
>> >
>> > private Process process;
>> >
>> > ...
>> >
>> > for loop {
>> >
>> >          process = new Process(...)
>> >          process.execute(new TaskAdapter<String>(tl));
>> >
>> >          other code...
>> > }
>> >
>> > the Process class extends the Task class. If my for loop gets called only 
>> > once everything works perfect. Otherwise, though, the code keeps running 
>> > and the process variable gets re-initialized with every loop until finally 
>> > only the last run of the loop makes the process run completely (with my UI 
>> > acting accordingly). What do I have to do to make the code stop after the 
>> > process.execute() line ? I already tried the wait and notify methods, but 
>> > they gave me errors until I used the synchronized keyword. Then, however, 
>> > the processes run correctly but my UI freezes (indefinitely).
>> >
>> > I'm kind of stuck here... is using the Task class the right way to go or 
>> > are there better ways for running threads in the background keeping my UI 
>> > nice and healthy ?
>> >
>> > Regards
>> >
>> > --
>> > Mathias Versichele
>> > Bio-ir milieutechnologie / Msc. geografie
>> > Oudburgstraat 16
>> > 9240 Zele
>> > 0485/16.07.08
>> 
>> 
>> 
>> 
>> -- 
>> Mathias Versichele
>> Bio-ir milieutechnologie / Msc. geografie
>> Oudburgstraat 16
>> 9240 Zele
>> 0485/16.07.08
> 
> 
> 
> 
> -- 
> Mathias Versichele
> Bio-ir milieutechnologie / Msc. geografie
> Oudburgstraat 16
> 9240 Zele
> 0485/16.07.08

Reply via email to