Windows C# Tutorial

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
public class fmrFibers : System.Windows.Forms.Form {
    private System.Windows.Forms.ListBox lstFibers;
    [DllImport("kernel32.dll")]
    extern static IntPtr ConvertThreadToFiber(int fiberData);
    [DllImport("kernel32.dll")]
    extern static IntPtr CreateFiber(int size, System.Delegate function, int handle);
    [DllImport("kernel32.dll")]
    extern static IntPtr SwitchToFiber(IntPtr fiberAddress);
    [DllImport("kernel32.dll")]
    extern static void DeleteFiber(IntPtr fiberAddress);
    [DllImport("kernel32.dll")]
    extern static int GetLastError();
    delegate void SetTextOutputToEventLog(int number);
    public fmrFibers() {
        this.lstFibers = new System.Windows.Forms.ListBox();
        this.SuspendLayout();
        this.lstFibers.Size = new System.Drawing.Size(320, 212);
        this.ResumeLayout(false);
        Thread t1 = new Thread(new ThreadStart(NewThreadToFiberExecution));
        t1.Start();
    }
    void OutputLog(int fiberNumber) {
        this.Invoke(new AddToListBox(SetText), new object[] { fiberNumber });
        SwitchToFiber(obj);
    }
    void SetText(int message) {
        lstFibers.Items.Add("Fiber " + message.ToString() + " added this");
    }
    delegate void AddToListBox(int message);
    System.IntPtr obj;
    void NewThreadToFiberExecution() {
        try {
            SetTextOutputToEventLog stof = new SetTextOutputToEventLog(OutputLog);
            obj = ConvertThreadToFiber(0);
            long l1 = GetLastError();
            System.IntPtr retVal1 = CreateFiber(500, stof, 1);
            if (GetLastError() != 0) throw new Exception("Create Fiber failed!!");
            IntPtr fiber1return = SwitchToFiber(retVal1);
            if (GetLastError() != 0) throw new Exception("Create Fiber failed!!");
            DeleteFiber(retVal1);
        } catch (Exception e) {
            throw e;
        }
    }
    [STAThread]
    static void Main() {
        Application.Run(new fmrFibers());
    }
}