private void RunAsyncListener(ChangeListener listener) { listener.BeginInvoke((ar) => { AsyncResult result = (AsyncResult)ar; ChangeListener caller = (ChangeListener)result.AsyncDelegate; caller.EndInvoke(ar); }, null); }