take into account the feature of AutoResetEvent