private void btProcess_Click(object sender, EventArgs e) { if (CancelIfNecessary() || !VerifyInput()) { return; } try { ReadTheSource(tbSource.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } btProcess.Text = "Cancel"; btClose.Enabled = false; _cancelFlag = false; AnalysisExecutionContext context = new AnalysisExecutionContext(_documents); context.ExecutionProgress += ExecutionProgress; context.Key = tbMechanicalTurkKey.Text; context.Secret = tbMechanicalTurkSecret.Text; context.Language = cbLanguage.Text; MechanicalTurkSettings settings = new MechanicalTurkSettings(null, int.Parse(cbMechanicalTurkAssignments.Text), decimal.Parse(tbMechanicalTurkReward.Text), (int.Parse(tbMechanicalTurkTime.Text) * 60), (int.Parse(tbMechanicalTurkApprove.Text) * 60), int.Parse(tbMechanicalTurkPercent.Text)); if (cbMechanicalTurkNotification.Checked) { settings.Email = tbMechanicalTurkEmail.Text; } if (cbMechanicalTurkLocale.SelectedIndex > -1) { settings.Locale = LocaleHelper.GetCountryAbbreviation(cbMechanicalTurkLocale.SelectedItem as string); } context.CustomField = settings; if (UseDebugMode && Benchmark) { context.UseDebugMode = true; } WriteDebugInfo("Running the dedicated thread for MechanicalTurk context serving..."); bool isFirstRun = !_documents.First().Value.GetServices().Contains("MechanicalTurk"); MechanicalTurkExecutor executor = new MechanicalTurkExecutor(); ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object obj) { if (isFirstRun) { executor.Execute(context); } else { executor.Request(context); } }), null); }