ManualResetEvent: Reset

   
 


using System;
using System.Threading;


class Reset {
    [STAThread]
    static void Main() {
        ManualResetEvent manRE;
        manRE = new ManualResetEvent(true);
        bool state = manRE.WaitOne(1000, true);
        Console.WriteLine(state);

        manRE.Reset();
        state = manRE.WaitOne(5000, true);
        Console.WriteLine(state);
    }
}

    


ManualResetEvent: Set

   
 

using System;
using System.Threading;

class ManualSet{
    [STAThread]
    static void Main(string[] args) {
        ManualResetEvent manRE = new ManualResetEvent(false);
        bool state = manRE.WaitOne(5000, true);
        Console.WriteLine("ManualResetEvent After first WaitOne " + state);

        manRE.Set();
        state = manRE.WaitOne(5000, true);
        Console.WriteLine("ManualResetEvent After second WaitOne " + state);
    }
}
   

    


Define macro for conditional compile

   


#define win2000
#define release
#undef  win98

using System;
using System.Diagnostics;

    class Test
    {
        [Conditional("DEBUG")]
        public static void DumpState()
        {
            Console.WriteLine("Dump some state...");
        }

        public static void Main()
        {
            string platformName;

            #if winXP       // Compiling for Windows XP
                platformName = "Microsoft Windows XP";
            #elif win2000   // Compiling for Windows 2000
                platformName = "Microsoft Windows 2000";
            #elif winNT     // Compiling for Windows NT
                platformName = "Microsoft Windows NT";
            #elif win98     // Compiling for Windows 98
                platformName = "Microsoft Windows 98";
            #else           // Unknown platform specified
                platformName = "Unknown";
            #endif

            Console.WriteLine(platformName);

            // Call the conditional DumpState method
            DumpState();

        }
    }

           
          


#undef, #elif, and #else preprocessor directives

#define DEBUG
#undef DEBUG
#define PRODUCTION

class Test {
public static void Main() {
int total = 0;
int counter = 10;

myLabel:
System.Console.WriteLine(“counter = ” + counter);
if (counter < 5) { #if DEBUG System.Console.WriteLine("goto myLabel"); #elif PRODUCTION System.Console.WriteLine("counter < 5"); #else System.Console.WriteLine("goto myLabel, counter < 5"); #endif goto myLabel; } System.Console.WriteLine("total = " + total); } } [/csharp]

Log utility based on File with File.AppendAllText

   
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


  public static class Logger
  {
    private static string logFile = @"logz.txt";
    private static string errorLogFile = @"errorLogz.txt";

    public static void Log(string s)
    {
      System.IO.File.AppendAllText(logFile, DateTime.Now + ": " + s + Environment.NewLine);
    }

    public static void LogError(string s)
    {
      System.IO.File.AppendAllText(errorLogFile, DateTime.Now + ": " + s + Environment.NewLine);
    }
  }