public void executeVerification(VerifyAsset verifyAsset, SpecificationBase specbase)
        {
            //initialize CSP module with CSP Code

            PATUtil   util = new PATUtil();
            Stopwatch sw   = new Stopwatch();

            sw.Start();

            // run assertions and gather results
            ConcurrentBag <DiagnosisResult> results = new ConcurrentBag <DiagnosisResult>();

            foreach (String assertionName in verifyAsset.deadloopCheck)
            {
                results.Add(util.executeAssertion(specbase, assertionName));
            }
            foreach (String assertionName in verifyAsset.livelockCheck)
            {
                results.Add(util.executeAssertion(specbase, assertionName));
            }
            sw.Stop();
            VerifyResult verResult = new VerifyResult();

            verResult.elapseTime    = sw.ElapsedMilliseconds;
            verResult.diagnosisList = results;
            System.Diagnostics.Debug.WriteLine("Total Result" + results.Count);


            T stuffReturned = (T)Convert.ChangeType(verResult, typeof(T));

            callback(stuffReturned);
        }
 public ThreadedVerificationExecuter(CallBackDelegate callback, VerifyAsset asset, SpecificationBase specbase)
 {
     this.callback = callback;
     t             = new Thread(() => executeVerification(asset, specbase));
 }