using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using CLIPSNET;
using RouterFormsExample.Properties;
namespace RouterFormsExample
{
public partial class RouterFormsExample : Form
{
private CLIPSNET.Environment autoEnv = new CLIPSNET.Environment();
private CLIPSNET.Environment animalEnv = new CLIPSNET.Environment();
public void RunExample(
BackgroundWorker worker,
DoWorkEventArgs e,
CLIPSNET.Environment theEnv)
{
theEnv.Reset();
while (theEnv.Run(1) > 0)
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
return;
}
}
}
private void OnLoad(object sender, EventArgs e)
{
this.autoTextBox.AttachRouter(autoEnv);
autoEnv.LoadFromResource("RouterFormsExample", "RouterFormsExample.auto.clp");
autoEnv.LoadFromResource("RouterFormsExample", "RouterFormsExample.auto_en.clp");
this.animalTextBox.AttachRouter(animalEnv);
animalEnv.LoadFromResource("RouterFormsExample", "RouterFormsExample.bcengine.clp");
animalEnv.LoadFromResource("RouterFormsExample", "RouterFormsExample.animal.clp");
animalEnv.LoadFromResource("RouterFormsExample", "RouterFormsExample.animal_en.clp");
autoBackgroundWorker.RunWorkerAsync();
animalBackgroundWorker.RunWorkerAsync();
}
public RouterFormsExample()
{
InitializeComponent();
}
private void AutoDoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
RunExample(worker,e,autoEnv);
}
private void AnimalDoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
RunExample(worker,e,animalEnv);
}
private void AutoWorkCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{ MessageBox.Show(e.Error.Message); }
else if (e.Cancelled)
{ }
else
{ this.RestartAuto.Enabled = true; }
}
private void AnimalWorkCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{ MessageBox.Show(e.Error.Message); }
else if (e.Cancelled)
{ }
else
{ this.RestartAnimal.Enabled = true; }
}
private void RestartAutoClicked(object sender, EventArgs e)
{
this.RestartAuto.Enabled = false;
this.autoTextBox.Clear();
this.autoTextBox.Focus();
autoBackgroundWorker.RunWorkerAsync();
}
private void RestartAnimalClicked(object sender, EventArgs e)
{
this.RestartAnimal.Enabled = false;
this.animalTextBox.Clear();
this.animalTextBox.Focus();
animalBackgroundWorker.RunWorkerAsync();
}
private void OnClosing(object sender, FormClosingEventArgs e)
{
this.autoTextBox.OnClosing();
autoBackgroundWorker.CancelAsync();
while (autoBackgroundWorker.IsBusy)
{ Application.DoEvents(); }
this.animalTextBox.OnClosing();
animalBackgroundWorker.CancelAsync();
while (animalBackgroundWorker.IsBusy)
{ Application.DoEvents(); }
}
}
}