I tried to place lock in async block and in getnewblock() procedure. But the result was the same =(
I also tried to use Thread::Queue instead of array, but there also were some problems like I described in first post.
Have you any other ideas how can this coe work correctly?