Skip to content

如何让同一时间只让一个人执行导出(Excel)操作?

🏷️ C#

  • 添加 using

    csharp
    using System.Threading;
  • 定义静态变量:

    csharp
    /// <summary>
    /// 这个互斥体可以保证所有进程得到同步
    /// </summary>
    static Mutex mutex = new Mutex(false, "Export");**
  • 添加互斥操作:

    csharp
    // 进入互斥(等待 10 秒超时返回 false)
    if(mutex.WaitOne(10000))
    {
        try 
        {
            // 导出数据
            WriteExcel();
        } 
        catch (Exception)
        {
            throw;
        }
        finally
        {
            // 退出互斥
            mutex.ReleaseMutex();
        }
    }
    else
    {
        // todo 已经有人在导出时的处理
    }