compcode

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
compcode [2007/06/12 15:34]
lavirotte créée
compcode [2011/06/06 10:48] (current)
Stéphane Lavirotte [Source Code]
Line 1: Line 1:
 +====== 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) :
 +
 <code csharp> <code csharp>
-using WComp.Beans// It contains the definition of the attribute [Bean]+using System;
 using System.Threading;​ // For the thread demo purposes using System.Threading;​ // For the thread demo purposes
-namespace ​Your_Namespace_Name ​+using WComp.Beans;​ 
-[Bean] + 
-public class Your_CSharpBean_Name ​+namespace ​WComp.Beans 
-public ​Your_CSharpBean_Name() { +
-// Put here your init instructions + /// <​summary>​ 
-// Example of a loop that call the output + /// This is a sample bean, using a thread, which has an integer evented property and a method  
-// every second. +        ///     to start the thread. 
-new Thread(new ThreadStart(ThreadLoopMethod)).Start();​ + ///  
-+ /// Notes: this bean uses the IThreadCreator interface providing a cleanup method named `Stop()'​. 
-// Loop sample + /// Several classes can be defined or used by a Bean, but only the class with the 
-public void ThreadLoopMethod() { + /// [Bean] attribute will be available in WComp. Its ports will be all public methods, 
-while(Thread.CurrentThread.IsAlive) { + ///     ​events and properties definied in that class. 
-Thread.Sleep(1000); + /// </​summary>​ 
-double result; + [Bean(Category="​MyCategory"​)
-// Check if the output is connected + public class BeanThread1 : IThreadCreator ​
-if(Output_Sample != null) + private Thread t;   // Private attributes of the class 
-// call the connected methods sequentially + private volatile bool run = false; 
-result = Output_Sample(123); + private int sleepVal = 1000; 
-// and so on... + private volatile int eventValue;​ 
-+  
-+ public ​BeanThread1() { 
-// --- Start: Input port sample --- + // Put here your init instructions 
-// an input port is a method (below) + eventValue = 10; 
-public ​int Input_Sample(string param_name) { +
-string pn param_name; // You may use the parameters +  
-return ​0; // You may return anything + public void Start() {  ​// method starting ​the thread 
-+ if (!run) { 
-// --- End: Input port sample --- + run = true; 
-// --- Start: Output port sample --- + t = new Thread(new ThreadStart(ThreadLoopMethod))
-public delegate ​double ​Output_Sample_Signature(int ​param_name); + t.Start(); 
-// This is the signature of the output method + }  
-public event Output_Sample_Signature Output_Sample;​ +
-// The output port is the event (before) + public void Stop() {   // IThreadCreator defines the Stop() method 
-// --- End: Output port sample --- + 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 --- 
 + }
 } }
 +
 +</​code>​
 +
 +===== Compilation =====
 +
 +Here is a sample of the command line compilation:​
 +<​code>​
 +csc.exe /​target:​library /​r:​Beans.dll Sample_Component.cs
 </​code>​ </​code>​
 +
 +You will find Beans.dll in the SharpWComp distrib.
  • compcode.1181655293.txt.gz
  • Last modified: 2007/06/12 15:34
  • by lavirotte