Example #1
0
        internal static void GuessWorker(
            AsyncGuessState guessState)
        {
            if (guessState.Canceled)
            {
                return;
            }


            guessState.Result = null;
            guessState.Result = GetFromCache(guessState.Phrase);
            if (guessState.Result == null)
            {
                guessState.Result = googleGuesser.Guess(guessState.Phrase, guessState.NetworkSetting);
            }
            AddToCache(guessState.Result);


            GuessCompletedEventArgs e =
                new GuessCompletedEventArgs(
                    guessState,
                    null,
                    false,
                    guessState);

            try
            {
                guessState.AsyncOperation.PostOperationCompleted(GuessCompleted, e);
            }
            catch (InvalidOperationException)
            {
            }
            guessState.Canceled = true;
        }
Example #2
0
        public static void CancelAsync(AsyncGuessState guessState)
        {
            if (guessState == null)
            {
                throw new ArgumentNullException("guessState");
            }

            AsyncOperation asyncOp = guessState.AsyncOperation;

            GuessCompletedEventArgs e =
                new GuessCompletedEventArgs(
                    guessState,
                    null,
                    true,
                    guessState);

            try
            {
                asyncOp.PostOperationCompleted(GuessCompleted, e);
            }
            catch (InvalidOperationException)
            {
            }
            guessState.Canceled = true;
        }
Example #3
0
        public static GuessResult Guess(string phrase, NetworkSetting networkSetting, EventHandler <GuessCompletedEventArgs> guessCompletedHandler)
        {
            AsyncGuessState state = null;
            bool            done  = false;
            EventHandler <GuessCompletedEventArgs> myHandler = delegate(object sender, GuessCompletedEventArgs e)
            {
                try
                {
                    FreeCL.Forms.Application.EndGuiLockingTask();
                    if (guessCompletedHandler != null)
                    {
                        guessCompletedHandler.Invoke(state, e);
                    }
                }
                finally
                {
                    done = true;
                }
            };

            FreeCL.Forms.Application.StartGuiLockingTask(LangPack.TranslateString("Language detection"));
            state = GuessAsync(phrase, networkSetting, myHandler);

            while (!done)
            {
                System.Windows.Forms.Application.DoEvents();
                Thread.Sleep(50);
            }
            return(state.Result);
        }
Example #4
0
 internal GuessCompletedEventArgs(
     AsyncGuessState guessState,
     Exception e,
     bool canceled,
     object state) : base(e, canceled, state)
 {
     this.guessState = guessState;
     this.result     = guessState.Result;
 }
Example #5
0
        public static AsyncGuessState GuessAsync(string phrase, NetworkSetting networkSetting, EventHandler <GuessCompletedEventArgs> guessCompletedHandler)
        {
            AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(DateTime.Now.Ticks);

            AsyncGuessState state = new AsyncGuessState(phrase, networkSetting, asyncOp, guessCompletedHandler);

            WorkerEventHandler workerDelegate = new WorkerEventHandler(GuessWorker);

            workerDelegate.BeginInvoke(
                state,
                null,
                null);

            return(state);
        }
Example #6
0
        internal static void GuessWorker(
            AsyncGuessState guessState)
        {
            if(guessState.Canceled)
                return;

            guessState.Result = null;
            guessState.Result = GetFromCache(guessState.Phrase);
            if(guessState.Result == null)
            {
                guessState.Result = googleGuesser.Guess(guessState.Phrase, guessState.NetworkSetting);
            }
            AddToCache(guessState.Result);

            GuessCompletedEventArgs e =
                new GuessCompletedEventArgs(
                guessState,
                null,
                false,
                guessState);

            try
            {
                guessState.AsyncOperation.PostOperationCompleted(GuessCompleted, e);
            }
            catch (InvalidOperationException)
            {

            }
            guessState.Canceled = true;
        }
Example #7
0
        public static AsyncGuessState GuessAsync(string phrase, NetworkSetting networkSetting, EventHandler<GuessCompletedEventArgs> guessCompletedHandler)
        {
            AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(DateTime.Now.Ticks);

            AsyncGuessState state = new AsyncGuessState(phrase, networkSetting, asyncOp, guessCompletedHandler);

            WorkerEventHandler workerDelegate = new WorkerEventHandler(GuessWorker);
               			workerDelegate.BeginInvoke(
                        state,
                        null,
                        null);

            return state;
        }
Example #8
0
        public static void CancelAsync(AsyncGuessState guessState)
        {
            if(guessState == null)
                throw new ArgumentNullException("guessState");

            AsyncOperation asyncOp = guessState.AsyncOperation;

            GuessCompletedEventArgs e =
                new GuessCompletedEventArgs(
                guessState,
                null,
                true,
                guessState);

            try
            {
                asyncOp.PostOperationCompleted(GuessCompleted, e);
            }
            catch (InvalidOperationException)
            {

            }
            guessState.Canceled = true;
        }
Example #9
0
 internal GuessCompletedEventArgs(
     AsyncGuessState guessState,
     Exception e,
     bool canceled,
     object state)
     : base(e, canceled, state)
 {
     this.guessState = guessState;
     this.result = guessState.Result;
 }