public void DoWork() { for (;;) { WakeEvent.WaitOne(); if (bStopRequested) { break; } string UserName = RequestedUserName; List <PerforceDescribeRecord> Descriptions = null; List <PerforceChangeSummary> Changes; if (Perforce.FindChanges(new string[] { "//..." }, UserName, 100, out Changes, Log)) { Perforce.DescribeMultiple(Changes.Select(x => x.Number), out Descriptions, Log); } MainThreadSyncContext.Post((o) => { OnComplete(UserName, Descriptions); }, null); } }