写一个xml文件,然后在程序起动时读写这个文件,并更新它的次数

解决方案 »

  1.   

    使用Mutex 类,控制一个线程
      

  2.   

    Mutex示例:
    using System; 
    using System.Threading; public class MutexSample 

    static Mutex gM1; 
    static Mutex gM2; 
    const int ITERS = 100; 
    static AutoResetEvent Event1 = new AutoResetEvent(false); 
    static AutoResetEvent Event2 = new AutoResetEvent(false); 
    static AutoResetEvent Event3 = new AutoResetEvent(false); 
    static AutoResetEvent Event4 = new AutoResetEvent(false); public static void Main(String[] args) 

    Console.WriteLine("Mutex Sample ..."); 
    // 创建 Mutex initialOwned,名称为“MyMutex”。 
    gM1 = new Mutex(true,"MyMutex"); 
    // 创建没有名称的 Mutex initialOwned。 
    gM2 = new Mutex(true); 
    Console.WriteLine(" - Main Owns gM1 and gM2"); AutoResetEvent[] evs = new AutoResetEvent[4]; 
    evs[0] = Event1; // t1 的事件 
    evs[1] = Event2; // t2 的事件 
    evs[2] = Event3; // t3 的事件 
    evs[3] = Event4; // t4 的事件 MutexSample tm = new MutexSample( ); 
    Thread t1 = new Thread(new ThreadStart(tm.t1Start)); 
    Thread t2 = new Thread(new ThreadStart(tm.t2Start)); 
    Thread t3 = new Thread(new ThreadStart(tm.t3Start)); 
    Thread t4 = new Thread(new ThreadStart(tm.t4Start)); 
    t1.Start( ); // 执行 Mutex.WaitAll(gM1 和 gM2 的 Mutex[]) 
    t2.Start( ); // 执行 Mutex.WaitOne(Mutex gM1) 
    t3.Start( ); // 执行 Mutex.WaitAny(gM1 和 gM2 的 Mutex[]) 
    t4.Start( ); // 执行 Mutex.WaitOne(Mutex gM2) Thread.Sleep(2000); 
    Console.WriteLine(" - Main releases gM1"); 
    gM1.ReleaseMutex( ); // t2 和 t3 将结束并发出信号 Thread.Sleep(1000); 
    Console.WriteLine(" - Main releases gM2"); 
    gM2.ReleaseMutex( ); // t1 和 t4 将结束并发出信号 // 等待直到所有这 4 个线程都发出信号表明它们已完成。 
    WaitHandle.WaitAll(evs); 
    Console.WriteLine("... Mutex Sample"); 
    } public void t1Start( ) 

    Console.WriteLine("t1Start started, Mutex.WaitAll(Mutex[])"); 
    Mutex[] gMs = new Mutex[2]; 
    gMs[0] = gM1; // 为 WaitAll 调用创建并加载 Mutex 的数组 
    gMs[1] = gM2; 
    Mutex.WaitAll(gMs); // 等待直到 gM1 和 gM2 都已释放 
    Thread.Sleep(2000); 
    Console.WriteLine("t1Start finished, Mutex.WaitAll(Mutex[]) satisfied"); 
    Event1.Set( ); // AutoResetEvent.Set() 标记方法已完成 
    } public void t2Start( ) 

    Console.WriteLine("t2Start started, gM1.WaitOne( )"); 
    gM1.WaitOne( ); // 等待直到 Mutex gM1 被释放 
    Console.WriteLine("t2Start finished, gM1.WaitOne( ) satisfied"); 
    Event2.Set( ); // AutoResetEvent.Set() 标记方法已完成 
    } public void t3Start( ) 

    Console.WriteLine("t3Start started, Mutex.WaitAny(Mutex[])"); 
    Mutex[] gMs = new Mutex[2]; 
    gMs[0] = gM1; // 为 WaitAny 调用创建并加载 Mutex 的数组 
    gMs[1] = gM2; 
    Mutex.WaitAny(gMs); // 等待直到任何一个 Mutex 被释放 
    Console.WriteLine("t3Start finished, Mutex.WaitAny(Mutex[])"); 
    Event3.Set( ); // AutoResetEvent.Set() 标记方法已完成 
    } public void t4Start( ) 

    Console.WriteLine("t4Start started, gM2.WaitOne( )"); 
    gM2.WaitOne( ); // 等待直到 Mutex gM2 被释放 
    Console.WriteLine("t4Start finished, gM2.WaitOne( )"); 
    Event4.Set( ); // AutoResetEvent.Set() 标记方法已完成