我使用的是Visual Studio WebPerformance Tool,我的问题是我的所有网络测试都运行得很好但是当我运行负载测试(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();
答案 0 :(得分: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();