public virtual void RunThreads(string fileName) { List <string> files = CheckFile(fileName); if (files.Count == 0) { return; } maxV = files.Count; //Wrapper wrapper = new Wrapper(); //List<Thread> runnigThreads = new List<Thread>(); if (this is FragBagProfile || set.iOTroubles)// || this is RNASSProfile) { threadNumbers = 1; } Task[] runnigTask = new Task[threadNumbers]; Task startProg; PrepareDataForThreading(files, threadNumbers); for (int i = 0; i < threadNumbers; i++) { ThreadFiles tparam = new ThreadFiles(); tparam.fileName = GetProfileFileName(fileName) + "_" + i; tparam.dirName = GetDirectory(fileName); tparam.threadNumber = i; startProg = new Task <int>(n => Run((object)n), tparam); startProg.Start(); //startProg.Start(tparam); runnigTask[i] = startProg; //while (!startProg.IsAlive) ; //RunSubList(auxFiles, fileN); } for (int i = 0; i < threadNumbers; i++) { runnigTask[i].Wait(); } //Task.WaitAll(runnigTask); currentProgress = maxV; if (ex != null) { throw ex; } //runnigTask[i].Join(); if (files.Count > 0) { JoinFiles(fileName); } }
public virtual void RunThreads(string fileName) { List<string> files = CheckFile(fileName); if (files.Count == 0) return; maxV = files.Count; //Wrapper wrapper = new Wrapper(); //List<Thread> runnigThreads = new List<Thread>(); Task[] runnigTask = new Task[threadNumbers]; Task startProg; PrepareDataForThreading(files, threadNumbers); for (int i = 0; i < threadNumbers; i++) { ThreadFiles tparam = new ThreadFiles(); tparam.fileName = GetProfileFileName(fileName) + "_" + i; tparam.dirName = GetDirectory(fileName); tparam.threadNumber = i; startProg = new Task<int>(n => Run((object) n),tparam); startProg.Start(); //startProg.Start(tparam); runnigTask[i]=startProg; //while (!startProg.IsAlive) ; //RunSubList(auxFiles, fileN); } for (int i = 0; i < threadNumbers; i++) runnigTask[i].Wait(); //Task.WaitAll(runnigTask); currentProgress = maxV; if (ex != null) throw ex; //runnigTask[i].Join(); if(files.Count>0) JoinFiles(fileName); }