Need help understanding system.tag.writeAllSynchronous()

Why do you want to read the tags immediately after you have written them?

writeAll is an asynchronous function, so it moves on to the readAll before the writes have actually completed.

Read all on the other hand is not asynchronous. It will read the values of the tags at that time which may or may not be after the write has occurred.

What are you expecting to happen to the tag values that you need to read them again after the write? Is the controller modifying them?

You could use invokeLater with the delay to wait until all processing and pending events plus your delay are finished to make the call.

Something like this:

#code leading up to the tag write
system.tag.writeAll(tagPaths,tagValues)

#if you need to pass parameters to the function then you must use default parameters
#invokeLater will call the function with no parameters sent.
def updateTable():
    system.tag.readAll(tagPaths,tagValues)
   #do any processing dependent on the tag read here.

#this will wait until all currently processing and pending events are completed
#plus 10 sec's (the delay is in Milliseconds) to call the updateTable function
system.util.invokeLater(updateTable,10000)

If you don’t know how long the task in the controller is going to take then you will need to look into using invokeAsynchronous in conjunction with invokeLater.