C# 方法对该方法的每个实例运行
我正在尝试根据数据类中的方法设置ASP行和单元格颜色。我有颜色设置和运行的方法。该方法根据以下条件返回C# 方法对该方法的每个实例运行,c#,sql,C#,Sql,我正在尝试根据数据类中的方法设置ASP行和单元格颜色。我有颜色设置和运行的方法。该方法根据以下条件返回true或false。如何防止该方法多次运行 例如,它运行一次并正确返回,然后在lineNum和brandNum字段中使用与第一次运行相同的包数再次运行。它处理为对方法调用的每个实例运行一次。然后,当我再次调用该方法时,它会再次运行所有操作。为什么它会不止一次运行,我如何修复它 output: lineNum:123 brandNum:456 packCount:15 second run (n
true
或false
。如何防止该方法多次运行
例如,它运行一次并正确返回,然后在lineNum
和brandNum
字段中使用与第一次运行相同的包数再次运行。它处理为对方法调用的每个实例运行一次。然后,当我再次调用该方法时,它会再次运行所有操作。为什么它会不止一次运行,我如何修复它
output:
lineNum:123 brandNum:456 packCount:15
second run (not asked for)
lineNum:"" brandNum:"" packCount:15
确定是否为真的方法:
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@GenNum6", itemNum),
new SqlParameter("@GenTxt9", brandNum)
};
try
{
reader = App_Code.DBHelper.executeQuery(dbConn,
sqlString.ToString(), parameters);
if (reader.HasRows)
{
while (reader.Read())
{
PackCount = reader["PackCount"].ToString();
}
}
reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (dbConn != null)
{
try { dbConn.Close(); dbConn.Dispose(); }
catch { }
}
if (reader != null)
{
try { reader.Close(); reader.Dispose(); }
catch { }
}
}
if (Convert.ToInt32(PackCount) <= 12)
{
return true;
}
else
{
return false;
}
不需要finally语句,因为它执行与try语句相同的操作。我相信在看过这首曲子之后,如果你回到它被调用的地方,你可能会让它在一次尝试中运行,做完全相同的事情。我建议你坐火车
reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();
退出try块并保留finally语句。这样,无论结果如何,都会执行这些项目
Finally仅在您希望代码在执行try语句后运行某些内容时使用。例如:
Try{
//Try this statement, if it works, run it.
}
catch{
//error occurred
}
finally{
//run this code whether the try failed or not.
}
请显示调用此的代码。此外,如果参数从未改变,考虑回忆结果,以避免不必要的昂贵的数据库调用。另外,查看调用堆栈以查看第二个调用来自何处。它可能来自控件内部或某些非您的代码,这可能会导致对该代码应该如何工作的误解,我经常使用WinForms事件来执行此操作。我认为我们需要更多信息,这里。这是正在运行的代码,但从您的描述中可以看出,错误将出现在调用thisEdit Make的代码中!我为缺少info.hmm表示歉意,假设调用的方法是
PacksLeft1
,将itemNum
和brandNum
作为两个参数。可能发生的情况是,读者正在处理两行,第二行为空,或者没有包含具有适当名称的列。特别是对于SQL Server,存储过程可以返回多个数据集。虽然很难说没有看到它的其余部分
Try{
//Try this statement, if it works, run it.
}
catch{
//error occurred
}
finally{
//run this code whether the try failed or not.
}