【发布时间】:2011-08-08 17:08:57
【问题描述】:
主要思想是我想同时调用 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();
}
}
}
【问题讨论】:
-
发布完整的堆栈跟踪。另外,这个有内部异常吗?
-
堆栈上没有任何东西......如果我删除了try catch,那么它不会给出错误..它似乎在connection.Open()之后停止执行;
-
如果您连接 sql-profiler,您是否可以看到正在执行的查询,即使代码似乎挂起?哦,请发布完整的测试。
-
确保您正在编译 DEBUG 版本而不是发布版本。检查项目设置'build'选项卡并确保选中了DEBUG复选框。
-
我最终只是创建了一个控制台项目,现在它工作正常......:\
标签: c# multithreading unit-testing sqlconnection