public void RunJob(BuildJob job, IMSBuildChainedLoggerFilter loggerChain, Action<bool> reportWhenDone, CancellationToken cancellationToken)
			{
				Debug.Assert(loggerChain != null);
				this.loggerChain = loggerChain;
				this.reportWhenDone = reportWhenDone;
				try {
					process.Writer.Write("StartBuild");
					job.WriteTo(process.Writer);
					this.cancellationRegistration = cancellationToken.Register(OnCancel);
				} catch (IOException ex) {
					// "Pipe is broken"
					loggerChain.HandleError(new BuildError(null, 0, 0, null, "Error talking to build worker: " + ex.Message));
					BuildDone(false);
				}
			}