/// <include file='InterfaceDocumentationComments.xml' path='doc/members/member[@name="M:MethodInvocationRemoting.IRemoteReceiver.Receive"]/*'/> public string Receive() { CheckNotDisposed(); string returnMessage = ""; cancelRequest = false; try { while (cancelRequest == false) { if (fileSystem.CheckFileExists(messageFilePath) == true) { if (fileSystem.CheckFileExists(lockFilePath) == false) { metricsUtilities.Begin(new MessageReceiveTime()); try { returnMessage = messageFile.ReadAll(); fileSystem.DeleteFile(messageFilePath); } catch (Exception e) { metricsUtilities.CancelBegin(new MessageReceiveTime()); throw; } metricsUtilities.End(new MessageReceiveTime()); metricsUtilities.Increment(new MessageReceived()); metricsUtilities.Add(new ReceivedMessageSize(returnMessage.Length)); loggingUtilities.LogMessageReceived(this, returnMessage); break; } } else { waitingForTimeout = true; if (readLoopTimeout > 0) { System.Threading.Thread.Sleep(readLoopTimeout); } waitingForTimeout = false; } } } catch (Exception e) { throw new Exception("Error receiving message.", e); } return(returnMessage); }