public bool Run() { switch (_msg.RequestList.Count) { case 0: StatusMgr.LogError("No items in batch to process"); return(false); case 1: break; default: if (_iterator != null) { StatusMgr.LogError("Iterators are only allowed in single request batches"); return(false); } _msg.Attributes.OnError = SDK.ENRqOnError.roeContinue; break; } try { bool retVal = false; IteratorCall iterCall = null; do { retVal = RunOneBatch(out iterCall); if (iterCall != null) { if (!iterCall.iterator(iterCall.iteratorId, iterCall.remaining)) { return(false); //user cancelled } } }while (retVal == true && iterCall != null); return(retVal); } catch (System.Runtime.InteropServices.COMException cex) { var entry = new StatusEntry() { Summary = "Request Error", TypeOfEntry = StatusEntry.EntryType.Error }; entry.AddLine(cex.Message); try { //This may not be the source of the error //entry.AddLine(_msg.ToXMLString()); //this causes further COM errors //entry.AddLine(_msg.Attributes.ResponseData.ToString()); entry.AddLine("Enable SDK logging for further diagnostics"); } catch (Exception) { } StatusMgr.LogEntry(entry); return(false); } }