/// <summary> /// Cancels a Phrase Generation Job thread. If the job isn't canceled before it is completed, the callback that was passed when the job was started may still get invoked. /// </summary> /// <param name="phraseGenerationJobId">The job id of the job that is being canceled. The id is the number that was returned from calling GeneratePhraseAsync</param> public void CancelPhraseGeneration(int phraseGenerationJobId) { PhraseGenerationJob jobToAbort = jobs.FirstOrDefault(j => j.Id == phraseGenerationJobId); if (jobToAbort != null) { jobToAbort.Abort(); jobs.Remove(jobToAbort); } }
/// <summary> /// Generates a phrase on a separate thread and sends the generated phrase and the seed used to generate it to a callback once complete. /// </summary> /// <param name="text">A TextAsset containing the template phrase for the newly generated phrase.</param> /// <param name="callback">A callback to which the string phrase and int seed will be passed.</param> /// <param name="seed">(Optional) The seed that will be used to generate the phrase. /// <para>Use this if you are wanting to recieve a phrase generated previously.</para> /// <para>If no seed is passed, a new one will be created and that int is what will be passed to the callback. Otherwise, the seed passed in is the one that will go to the callback.</para></param> /// <returns>The Id of the PhraseGenerationJob (thread) generating the phrase, can be passed to CancelGeneration to abort the thread later.</returns> public int GeneratePhraseAsyncFromTemplateString(string template, System.Action <string, int> callback, int?seed = null) { PhraseGenerationJob generationJob = new PhraseGenerationJob(); TemplateCluster cluster = TemplateParser.ParseTemplate(template); jobs.Add(generationJob); int _seed = seed.HasValue ? seed.Value : System.Environment.TickCount; generationJob.Start(_seed, cluster, callback); return(generationJob.Id); }