【问题标题】:Load Tests Exception "file is being used by another process" C#负载测试异常“文件正在被另一个进程使用”C#
【发布时间】:2016-08-26 11:05:54
【问题描述】:

我正在使用 Visual Studio WebPerformance Tool,我的问题是我的所有 Web 测试都运行良好,但是当我运行负载测试(100 个用户)时出现异常“进程无法访问文件,因为它是被另一个进程使用”。我的结论是并发用户试图同时读取同一个文件。

在负载下不起作用的代码:

int x; //user number
if(File.Exists("C:\\Users\\Desktop\\Tests\\users5a.txt"))
{
    var last_number = File.ReadAllLines("C:\\Users\\Desktop\\Tests\\users5a.txt").Last();
    x = int.Parse(last_number) + 1;
}
else
    x = 0;

System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Desktop\\Tests\\users5a.txt", true);
file.WriteLine(x);
file.Close();

【问题讨论】:

  • 抛出异常的代码在哪里?
  • 我已经编辑了我的问题,但同时我也找到了解决方案。谢谢
  • 您可以将解决方案添加到您的问题中以帮助他人。
  • 我做到了。上面添加了“有效的代码”。 @Cagy79
  • StreamWriter 实现IDisposable。您需要确保正确处理。

标签: c# performance load-testing webtest


【解决方案1】:

这行得通:

 EventWaitHandle waitHandle = new EventWaitHandle(true,EventResetMode.AutoReset, "SHARED_BY_ALL_PROCESSES");

    waitHandle.WaitOne();

    int x; //user number
    if (File.Exists("C:\\Users\\Desktop\\Tests\\users5a.txt"))
    {
        var last_number = File.ReadAllLines("C:\\Users\\Desktop\\Tests\\users5a.txt").Last();
        x = int.Parse(last_number) + 1;
    }
    else
        x = 0;

    System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Desktop\\Tests\\users5a.txt", true);
    file.WriteLine(x);
    file.Close();
    file.Dispose();
    waitHandle.Set();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2018-01-30
    • 2013-09-14
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多