bool DirCalc( clPtr<FS> f, FSPath& path, clPtr<FSList> list, NCDialogParent* parent ) { bool doCurrentDir = list->Count() == 0; OperDirCalcData data(parent, f, path, list); DirCalcThreadWin dlg(parent, doCurrentDir ? _LT("Current folder metrics") : _LT("Selected folder(s) metrics"), &data, f->Uri(path).GetUnicode()); dlg.RunNewThread( "Folder calc", DirCalcThreadFunc, &data ); //может быть исключение dlg.Enable(); dlg.Show(); int cmd = dlg.DoModal(); dlg.StopThread(); if ( cmd != CMD_OK ) { return false; } return true; }