private void LoadEvents() { tvEvents.Nodes.Clear(); WorkAsync(new WorkAsyncInfo { Message = "Loading Sdk message filters...", Work = (bw, e) => { _events = new List <IBusinessRuleEvent>(); bw.ReportProgress(0, "Loading Entities..."); _events.AddRange(BusinessRule.RetrieveAllBusinessRuleSteps(Service)); }, PostWorkCallBack = e => { if (e.Error != null) { MessageBox.Show(ParentForm, "An error occured: " + e.Error, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { TreeViewHelper tvh = new TreeViewHelper(tvEvents); foreach (IBusinessRuleEvent sEvent in _events) { tvh.AddSynchronousEvent(sEvent); } } }, ProgressChanged = e => { // it will display "I have found the user id" in this example SetWorkingMessage(e.UserState.ToString()); } }); }