public void UpdateInfo() { IConsistencyService[] server = new IConsistencyService[_servers.Count]; for (int i = 0; i < _servers.Count; i++) { server[i] = getOtherServers(_servers[i]); } callback returnedValueOnUpdate = new callback(); callback.RemoteUpdateDelegate RemoteDelforUpdate1 = new callback.RemoteUpdateDelegate(server[0].UpdateInfo); AsyncCallback RemoteCallbackOnUpdate = new AsyncCallback(returnedValueOnUpdate.OurRemoteUpdateCallBack); IAsyncResult RemArForLookup1 = RemoteDelforUpdate1.BeginInvoke(RemoteCallbackOnUpdate, null); callback.RemoteUpdateDelegate RemoteDelforUpdate2 = new callback.RemoteUpdateDelegate(server[1].UpdateInfo); IAsyncResult RemArForLookup2 = RemoteDelforUpdate2.BeginInvoke(RemoteCallbackOnUpdate, null); Log.Show(_username, "WAITING HERE FOR ONE SERVER"); returnedValueOnUpdate.waiter.WaitOne(); //returnedValueOnUpdate.waiter.Reset(); action.setinfo(returnedValueOnUpdate.info); return; }