【发布时间】:2011-04-02 23:31:19
【问题描述】:
我有一个函数GetAlertData(),它返回一个数据表。我将其调用为:
var dt = GetAlertData()
调试模式下的行为:
案例 1:当我一直按 F11 并进入 GetAlertData 函数时,一切正常,我得到了正确的表格
案例 2:当我对该函数执行 F10 并跳过它时,GetAlertData 返回一个表,其中所有值都填充为零(不正确)。 (我表的列都是float数据类型)
在发布模式下,行为与在调试模式下按 F10 相同,即我再次得到全零。
关于可能是什么原因的任何想法,或者我可以尝试找到什么原因?谢谢..
编辑:我的 GetAlertData 函数是这样的......
internal static DataSet GetAlertData()
{
using (var sqlConnection = new SqlConnection(Constants.ConnectionString))
{
const string sproc = @"[spo_GetAlertData]";
var cmd = new SqlCommand(sproc, sqlConnection) {CommandType = CommandType.StoredProcedure};
cmd.Parameters.Add("@TimeWindow", SqlDbType.Int);
cmd.Parameters["@TimeWindow"].Value =2
cmd.Parameters.Add("@ThresholdTime", SqlDbType.Int);
cmd.Parameters["@ThresholdTime"].Value = 2
var dsAnalysis = new DataSet();
var da = new SqlDataAdapter(cmd);
da.Fill(dsAnalysis);
if (dsAnalysis.Tables.Count > 0 && dsAnalysis.Tables[0].Rows.Count > 0)
return dsAnalysis;
return null;
}
}
【问题讨论】:
-
你怎么看这个?在可视化器中?还是调试器本地人?
-
您为什么决定将方法设为静态?这种类型的代码通常实现为基于实例的(非静态的)。简单地使其成为实例方法可能会解决潜在的线程问题。还考虑通过 lock(_synchObj) 进行一些同步以保护它
-
您是否看到案例 1 中的数据,仅在 GetAlertData 中,还是在返回给调用者之后?
-
情况1可以一路看到数据
标签: c# .net visual-studio visual-studio-2008 debugging