Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| compcode [2011/01/05 15:33] – update again hourdin | compcode [2011/06/06 08:48] (current) – [Source Code] Stéphane Lavirotte | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| <code csharp> | <code csharp> | ||
| - | using WComp.Beans; // Contains the definition of the [Bean] attribute | + | using System; |
| using System.Threading; | using System.Threading; | ||
| + | using WComp.Beans; | ||
| - | namespace | + | namespace |
| + | { | ||
| + | /// < | ||
| + | /// 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, | ||
| + | /// | ||
| + | /// </ | ||
| + | [Bean(Category=" | ||
| + | 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 --- | ||
| + | } | ||
| + | } | ||
| - | [Bean] | ||
| - | public class Your_CSharpBean_Name : IThreadCreator { | ||
| - | private Thread t; // Private attributes of the class | ||
| - | private volatile bool run; | ||
| - | private volatile int eventValue; | ||
| - | |||
| - | public Your_CSharpBean_Name() { | ||
| - | // Put here your init instructions | ||
| - | t = new Thread(new ThreadStart(ThreadLoopMethod)); | ||
| - | run = false; | ||
| - | eventValue = 10; | ||
| - | } | ||
| - | |||
| - | public void Start() { // method starting the thread | ||
| - | if (!run) { | ||
| - | run = true; | ||
| - | t.Start(); | ||
| - | } | ||
| - | } | ||
| - | public void Stop() { // since version 2.4.0.856, | ||
| - | run = false; | ||
| - | } | ||
| - | |||
| - | // Loop sample | ||
| - | | ||
| - | | ||
| - | | ||
| - | // Check if the output is connected | ||
| - | | ||
| - | // 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 --- | ||
| - | } | ||
| - | } | ||
| </ | </ | ||
| - | |||
| - | |||
| ===== Compilation ===== | ===== Compilation ===== | ||