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; }
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; }
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); }
internal GuessCompletedEventArgs( AsyncGuessState guessState, Exception e, bool canceled, object state) : base(e, canceled, state) { this.guessState = guessState; this.result = guessState.Result; }
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); }
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; }
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; }
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; }