====== Sample of a Bean ====== ===== Source Code ===== Here is a sample code of a component in C# (save this to a file called Your_CSharpBean_Name.cs) : using System; using System.Threading; // For the thread demo purposes using WComp.Beans; namespace WComp.Beans { /// /// This is a sample bean, using a thread, which has an integer evented property and a method /// to start the thread. /// /// Notes: this bean uses the IThreadCreator interface providing a cleanup method named `Stop()'. /// Several classes can be defined or used by a Bean, but only the class with the /// [Bean] attribute will be available in WComp. Its ports will be all public methods, /// events and properties definied in that class. /// [Bean(Category="MyCategory")] public class BeanThread1 : IThreadCreator { private Thread t; // Private attributes of the class private volatile bool run = false; private int sleepVal = 1000; private volatile int eventValue; public BeanThread1() { // Put here your init instructions eventValue = 10; } public void Start() { // method starting the thread if (!run) { run = true; t = new Thread(new ThreadStart(ThreadLoopMethod)); t.Start(); } } public void Stop() { // IThreadCreator defines the Stop() method run = false; } // Loop sample public void ThreadLoopMethod() { while(run) { Thread.Sleep(sleepVal); // Check if the output is connected if(Output_Sample != null) // call the connected methods sequentially Output_Sample(eventValue); // and so on... } } // --- Start: Input port sample --- // an input port is a public method (like below) public void Input_Sample(int intParam) { eventValue = intParam; // No return value is expected in WComp: // results are given using events } // --- End: Input port sample --- // --- Start: Output port sample --- public delegate void Output_Sample_Signature(int val); // The delegate defines the signature of the output method public event Output_Sample_Signature Output_Sample; // The output port is the event, named here Output_Sample // --- End: Output port sample --- } } ===== Compilation ===== Here is a sample of the command line compilation: csc.exe /target:library /r:Beans.dll Sample_Component.cs You will find Beans.dll in the SharpWComp distrib.