using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Workflow.Runtime;
using WorkflowLibrary1;
using System.Workflow.Activities;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
WorkflowRuntime wr = new WorkflowRuntime();
TestExchangeService testServ;
private void Form1_Load(object sender, EventArgs e)
{
ExternalDataExchangeService exServ = new ExternalDataExchangeService();
wr.AddService(exServ);
testServ = new TestExchangeService(this);
exServ.AddService(testServ);
wr.StartRuntime();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
wr.StopRuntime();
}
Guid workflowId;
private void button1_Click(object sender, EventArgs e)
{
WorkflowInstance wi = wr.CreateWorkflow(typeof(Workflow1));
workflowId = wi.InstanceId;
wi.Start();
}
private void button2_Click(object sender, EventArgs e)
{
testServ.FireEvent(workflowId);
}
public void showMessage(string stat)
{
MessageBox.Show(stat);
}
delegate void asyncShowMessage(string stat);
public void invokeShowMessage(string stat)
{
Invoke(new asyncShowMessage(showMessage), new object[] { stat });
}
}
public class TestExchangeService : ITestExchange
{
Form1 targetForm;
public TestExchangeService(Form1 form)
{
targetForm = form;
}
public void CallExternalMethodTest(string stat)
{
targetForm.invokeShowMessage(stat);
}
public event EventHandler<ExternalDataEventArgs> handleExternalEventTest;
internal void FireEvent(Guid workflowId)
{
handleExternalEventTest.Invoke(null, new ExternalDataEventArgs(workflowId));
}
}
}