Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用异步单元测试测试外部dll的线程安全性_C#_Multithreading_Unit Testing - Fatal编程技术网

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


据我所知,该错误与多线程无关,只是数据库表中的列名错误。你应该先解决这个问题。而且,这不一定能保证线程安全。这个测试只有在两个类都有共享资源的情况下才有帮助,因为您正在为每个任务更新一个新的线圈。如果还没有,请查看该类并了解其作用。据我所知,该错误与多线程无关,而是与数据库表中的列名称错误有关。你应该先解决这个问题。而且,这不一定能保证线程安全。这个测试只有在两个类都有共享资源的情况下才有帮助,因为您正在为每个任务更新一个新的线圈。如果你还没有,看看这门课,看看它在做什么。