private void OnSizeValueChanged(s_SizeInfo SizeInfo) { if (SizeValueChanged != null) { SizeValueChanged.Invoke(SizeInfo, EventArgs.Empty); } }
void CalcSizeWorker_DoWork(object sender, DoWorkEventArgs e) { s_SizeInfo CurrSizeInfo = new s_SizeInfo(); while (!CalcSizeWorker.CancellationPending) { if (NewFolderAdded.WaitOne(200, false)) { while (ViewSizeFolders.Count > 0) { TreeNode CurrNode = ViewSizeFolders.Dequeue(); try { CurrSizeInfo.ProcessRunning = true; CalcSizeWorker.ReportProgress(0, CurrSizeInfo); if (NeedNodeSizeRecheck(CurrNode)) { // only logical size recheck long sizeToAdd = GetNodeSize(CurrNode); if (!CurrNode.Checked) { sizeToAdd = -sizeToAdd; } ClearNodeSizeRecheck(CurrNode); RecalcNodeSizeUp(CurrNode, sizeToAdd); } else { CalcSizeNode(CurrNode); } } catch (Exception ex) { ErrorWorkProc.ErrorProcess(ex); } finally { CurrSizeInfo.SizeChecked = CalcSizeCheckedForAllNodes(CurrNode.TreeView.Nodes[0]); CurrSizeInfo.ProcessRunning = false; CalcSizeWorker.ReportProgress(0, CurrSizeInfo); } } } } }