public void Update()
        {
#if DEBUG
            Log.Logger.DebugFormat("WorkbookContext.Update");
#endif
            var newest = new Dictionary <string, TestCase>();

            foreach (Excel.Worksheet worksheet in this.Workbook.Worksheets)
            {
                Excel.ListObject listObject = ListObjectHelper.GetTestCases(worksheet).FirstOrDefault();

                if (null == listObject)
                {
                    continue;
                }

                TestCase testCase;
                string   key = listObject.Name;

                if (this.oldest.ContainsKey(key))
                {
                    testCase = this.oldest[key];
                    testCase.Update();
                }
                else
                {
                    testCase = new TestCase(this.Workbook, worksheet, listObject);
                }

                newest.Add(key, testCase);
            }

            var s1 = string.Join(",", this.oldest.Keys);
            var s2 = string.Join(",", newest.Keys);

            this.oldest = newest;

            if (s1 == s2)
            {
                return;
            }

            try
            {
                this.TestCases.RaiseListChangedEvents = false;
                this.TestCases.Clear();

                foreach (var testCase in newest.Values)
                {
                    this.TestCases.Add(testCase);
                }
            }
            finally
            {
                this.TestCases.RaiseListChangedEvents = true;
                this.TestCases.ResetBindings();
            }
        }
        public void DeleteEvidenceAll()
        {
            DisableScreenUpdating.Invoke(() =>
            {
                foreach (var testCase in this.TestCases)
                {
                    testCase.Result = TestResult.None;
                }

                List <Excel.Worksheet> deleteTargetWorksheets = new List <Excel.Worksheet>();

                foreach (Excel.Worksheet worksheet in this.Workbook.Worksheets)
                {
                    if (null != ExcelWorksheetCustomPropertyAccessor.Get(worksheet, EVIDENCE_PROPERTY))
                    {
                        deleteTargetWorksheets.Add(worksheet);
                    }
                    else
                    {
                        Excel.ListObject listObject = ListObjectHelper.GetTestCases(worksheet).FirstOrDefault();

                        if (null != listObject)
                        {
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Result].Clear();
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Error].Clear();
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Evidence].Clear();
                        }
                    }
                }

                DisableDisplayAlert.Invoke(() =>
                {
                    foreach (Excel.Worksheet worksheet in deleteTargetWorksheets)
                    {
                        worksheet.Delete();
                    }
                });
            });
        }