using System;
using System.Threading;
public class NonSignaledManual {
public static void Main() {
ManualResetEvent mansig = new ManualResetEvent(false);
Console.WriteLine("ManualResetEvent Before WaitOne ");
bool b = mansig.WaitOne(1000, false);
Console.WriteLine("ManualResetEvent After WaitOne " + b);
}
}
Month: February 2011
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);
}
}
Macro in action
using System;
class Class1{
static void Main(string[] args) {
#if false
Console.WriteLine("A");
#elif false
Console.WriteLine("B");
#else
Console.WriteLine("C");
#endif
}
}
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]
The use of the #define, #if, and #endif preprocessor directives
#define DEBUG
class Test
{
public static void Main()
{
int total = 0;
int counter = 0;
myLabel:
counter++;
total += counter;
System.Console.WriteLine(“counter = ” + counter);
if (counter < 5) {
#if DEBUG
System.Console.WriteLine("goto myLabel");
#endif
goto myLabel;
}
System.Console.WriteLine("total = " + total);
}
}
[/csharp]

