User Tools

Site Tools


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
	/// <summary>
	/// 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.
	/// </summary>
	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));
		public void Stop() {   // IThreadCreator defines the Stop() method
			run = false;
		 // Loop sample
		 public void ThreadLoopMethod() {
			 while(run) {
				 // Check if the output is connected
				 if(Output_Sample != null)
					 // call the connected methods sequentially
				// 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 ---


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.

compcode.txt · Last modified: 2011/06/06 10:48 by Stéphane Lavirotte