The method should be synchronous because it blocks the UI thread when you call it. Have you tried wrapping it within an asynchronous method? Examples of how to do this are available on the following pages:
Probably do you have an idea why execution of a procedure with this method blocks the table to which the procedure writes (meaning - I cannot read the table when procedure is executing)?