Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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# 方法对该方法的每个实例运行_C#_Sql - Fatal编程技术网

C# 方法对该方法的每个实例运行

C# 方法对该方法的每个实例运行,c#,sql,C#,Sql,我正在尝试根据数据类中的方法设置ASP行和单元格颜色。我有颜色设置和运行的方法。该方法根据以下条件返回true或false。如何防止该方法多次运行 例如,它运行一次并正确返回,然后在lineNum和brandNum字段中使用与第一次运行相同的包数再次运行。它处理为对方法调用的每个实例运行一次。然后,当我再次调用该方法时,它会再次运行所有操作。为什么它会不止一次运行,我如何修复它 output: lineNum:123 brandNum:456 packCount:15 second run (n

我正在尝试根据数据类中的方法设置ASP行和单元格颜色。我有颜色设置和运行的方法。该方法根据以下条件返回
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.
}