예제 #1
0
파일: Form.cs 프로젝트: m2pathan/SemantAPI
        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);
        }