C# 使用异步单元测试测试外部dll的线程安全性
我正在尝试对外部方法进行测试,以检查该方法是否是线程安全的。多用户场景。我的代码是这样的C# 使用异步单元测试测试外部dll的线程安全性,c#,multithreading,unit-testing,C#,Multithreading,Unit Testing,我正在尝试对外部方法进行测试,以检查该方法是否是线程安全的。多用户场景。我的代码是这样的 public async Task ComputeAirPressureDropThread_OK() { var tasks = new List<Task<double>>(); for (int i = 1; i <= 10; i++) { Task<double> t
public async Task ComputeAirPressureDropThread_OK()
{
var tasks = new List<Task<double>>();
for (int i = 1; i <= 10; i++)
{
Task<double> t = new Task<double>(() =>
{
var friterm = new Coil();
return friterm.ComputeAirPressureDrop(150);
}
);
t.Start();
tasks.Add(t);
}
var results = await Task.WhenAll(tasks);
foreach (var result in results)
{
Assert.AreEqual(result,
5.62194204005949,
0.0001);
}
}
public异步任务computeairpressedropthread_OK()
{
var tasks=新列表();
对于(int i=1;i
{
var friterm=新线圈();
返回friterm.ComputeAirPressureDrop(150);
}
);
t、 Start();
任务。添加(t);
}
var结果=等待任务.WhenAll(任务);
foreach(结果中的var结果)
{
断言.AreEqual(结果,
5.62194204005949,
0.0001);
}
}
上面代码中的computeairpressedrop(150)方法是我试图测试它是否是线程安全的。但是当运行测试时,我会遇到这样的错误。代码为4.6和vs 2015。该函数是一个具有正常引用的外部COM dll
据我所知,该错误与多线程无关,只是数据库表中的列名错误。你应该先解决这个问题。而且,这不一定能保证线程安全。这个测试只有在两个类都有共享资源的情况下才有帮助,因为您正在为每个任务更新一个新的线圈。如果还没有,请查看该类并了解其作用。据我所知,该错误与多线程无关,而是与数据库表中的列名称错误有关。你应该先解决这个问题。而且,这不一定能保证线程安全。这个测试只有在两个类都有共享资源的情况下才有帮助,因为您正在为每个任务更新一个新的线圈。如果你还没有,看看这门课,看看它在做什么。