Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 我可以强制ClassCleanup与ClassInitialize在同一线程中执行吗?_C# - Fatal编程技术网

C# 我可以强制ClassCleanup与ClassInitialize在同一线程中执行吗?

C# 我可以强制ClassCleanup与ClassInitialize在同一线程中执行吗?,c#,C#,在下面的代码片段中,我使用ClassInitialize和Cleanup围绕我正在运行的一系列测试包装事务。代码在我的GUI测试运行程序中工作,但在mstest命令行中失败,出现以下错误。我能强制类清理和初始化在同一个线程中吗?最好不要使用测试初始化和清理,因为这会显著降低测试速度 代码 private static TransactionScope _trans; [ClassInitialize] public static void ClassInitia

在下面的代码片段中,我使用ClassInitialize和Cleanup围绕我正在运行的一系列测试包装事务。代码在我的GUI测试运行程序中工作,但在mstest命令行中失败,出现以下错误。我能强制类清理和初始化在同一个线程中吗?最好不要使用测试初始化和清理,因为这会显著降低测试速度

代码

        private static TransactionScope _trans;

    [ClassInitialize]
    public static void ClassInitialize(TestContext context)
    {
        _trans = new TransactionScope();
        //...do work
    }

    [ClassCleanup]
    public static void ClassCleanup()
    {
        _trans.Dispose();
    }
错误

运行时存在以下问题:类清理方法 GeoMetExplainSheetTests.TestCleanup失败。错误消息: System.InvalidOperationException:必须处理TransactionScope 在创建它的同一线程上

堆栈跟踪:

在System.Transactions.TransactionScope.Dispose()中


我建议您通过删除
静态修饰符来替换

private TransactionScope _trans;

感谢您的建议,但这是不可能的,因为不幸的是ClassInitialize和ClassCleanup属性需要在静态方法上定义。找到这篇文章,其中重点介绍了在不同线程上对这些方法的调用。六羟甲基三聚氰胺六甲醚。。真倒霉希望你们当中有人能给我一个答案!?