private async void evoEngine_Work() { _evoEngine = new Evo2Engine(); evoEngine_SetPause(_pause); evoEngine_SetParam(); _evoEngine.OnGeneration_Started += evoEngine_OnGenerationStarted; _evoEngine.OnGeneration_Completed += evoEngine_OnGenerationCompleted; _evoEngine.OnIteration_Completed += evoEngine_OnIterationCompleted; _tokenSource = new CancellationTokenSource(); CancellationToken token = _tokenSource.Token; Task <EGrid> task = null; EGrid eGrid; string message = ""; try { task = Task <EGrid> .Factory.StartNew(() => _evoEngine.Work(token), token); eGrid = await task; } catch (OperationCanceledException) { //cancelled = true; } catch (Exception ex) { message = string.Format("error: {0}", ex.Message); } if (!task.IsFaulted) { message = (task.IsCanceled ? "cancel" : "finish"); } slblStatus.Text = message; _evoEngine = null; _tokenSource = null; btnStart.Enabled = false; btnPause.Enabled = false; }
public FormDebug(Evo2Engine evoEngine) { InitializeComponent(); _evoEngine = evoEngine; }