你好我想问你一个关于某个程序的小问题。所以基本上程序(控制台应用程序)从其他Procees(程序)读取数据包并传送数据包,以便对它们进行分析。我标记的问题是我的一个嵌套函数不会触发(完全)。例如:
此行位于Main()函数中。与其他人一起,这只是一个剪辑
captureDevice.OnPacketArrival += new PacketArrivalEventHandler(Program.device_OnPacketArrival);
之后我有一些console.writeline等没什么特别的。
device_OnPacketArrival()是函数与其他一些嵌套函数。
private static void device_OnPacketArrival(object sender, CaptureEventArgs packet)
{
DateTime date = packet.Packet.Timeval.Date;
int length = packet.Packet.Data.Length;
..........
Program.ValidateItem(first_db_id, first_bin_id, out char_id, out user_id, out type, out valid);
............
导致问题的函数是:ValidateItem()
public static void ValidateItem(int item_Id, int item_type, out int char_id, out int user_id, out int type, out int valid)
{
valid = type = user_id = char_id = 0;
string oString = "SELECT type,char_id,user_id FROM [DB].[dbo].[Table] WHERE id = @item_id";
SqlCommand oCmd = new SqlCommand(oString, Program.s_DB);
oCmd.Parameters.AddWithValue("@item_id", item_Id);
try
{
using (SqlDataReader oReader = oCmd.ExecuteReader())
{
if (oReader.Read())
{
type = Convert.ToInt32(oReader["type"]);
char_id = Convert.ToInt32(oReader["char_id"]);
user_id = Convert.ToInt32(oReader["user_id"]);
if (type == item_type)
{
valid = 1;
}
else
{
valid = 0;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
问题是只初始化了函数的第一行 - valid = type = user_id = char_id = 0;但是,如果我直接在Main()中运行该函数,它的工作正常。