public ActionResult GetStudySamples(int studyId) { var mainstreamStudySampleResponse = new MainstreamStudySampleResponseModel(); MainstreamStudySampleResponseObject samples = null; Thread searchStudyThread = new Thread(() => { try { samples = new Sam().ProcessGetMainstreamStudySample(studyId); } catch (Exception e) { LoggerFactory.GetLogger().Error(string.Format(msgUtil.GetMessage(MessageKey.LOG_SEARCHSTUDY_EXCEPTION), studyId), e); } }); try { searchStudyThread.Start(); if (searchStudyThread.Join(10000)) { OfferRepository offerRep = new OfferRepository(); List<SampleModel> sampleList = new List<SampleModel>(); foreach (var sample in samples.MainstreamStudySamples) { SampleModel newSample = new SampleModel(); newSample.StudySample = sample; if (offerRep.SelectOfferBySampleId(sample.SampleId) != null) { newSample.Exists = true; } sampleList.Add(newSample); } mainstreamStudySampleResponse.SampleList = sampleList; mainstreamStudySampleResponse.Errors = samples.Errors; } else { List<ServiceErrorObject> errorList = new List<ServiceErrorObject>(); ServiceErrorObject error = new ServiceErrorObject(); error.message = string.Format(msgUtil.GetMessage(MessageKey.ERR_SEARCHSTUDY_TIMEOUT), studyId); errorList.Add(error); mainstreamStudySampleResponse.Errors = errorList; } } catch { List<ServiceErrorObject> errorList = new List<ServiceErrorObject>(); ServiceErrorObject error = new ServiceErrorObject(); error.message = msgUtil.GetMessage(MessageKey.ERR_SEARCHSTUDY_EXCEPTION); errorList.Add(error); mainstreamStudySampleResponse.Errors = errorList; } return PartialView("_StudyResult", mainstreamStudySampleResponse); }