线程+单元测试+ SqlConnection调用不工作.它工作得很好,不使用线程
本文关键字:线程 工作 很好 调用 单元测试 SqlConnection | 更新日期: 2023-09-27 18:04:45
主要思想是我想同时调用4个不同的数据库,而不是一次调用一个。所以我使用线程,当它试图打开sql连接时,我得到:
无法计算表达式,因为代码已优化或本机帧位于调用堆栈的顶部
有什么想法吗?(这是在VS单元测试中运行的,如果这与它有任何关系的话)
using System;
using System.Data.SqlClient;
using System.Threading;
using Manual101.BLLDAL;
namespace Manual101.BLL
{
public class AgencySender
{
private CourtCase localcc;
private string connectionString = xxx;
public AgencySender(CourtCase cc)
{
this.localcc = cc;
}
public void SendOAG()
{
try
{
string queryString = "select JustisId from ReviewFilingCallbackMessage";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = queryString;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
var x = reader["JustisId"].ToString();
}
}
}
}
}
catch (Exception ex)
{
// log errors
}
}
}
public class AgencySenderHelper
{
private string connectionString = xxx
public void SendData(CourtCase cc)
{
// AgencySender ags = new AgencySender(cc);
// ags.SendOAG();
AgencySender ags = new AgencySender(cc);
Thread thread = new Thread(new ThreadStart(ags.SendOAG));
thread.Start();
}
}
}
确保在单元测试中等待线程终止。如果您派生出一堆线程并让主线程终止,那么MSTest进程将结束并带走所有派生的线程。在这种情况下,你经常会遇到奇怪的异常。
最简单的方法就是在你创建的所有线程上调用Thread.Join()。