我有我的控制器类的以下代码。我从控制器刷新我的视图。每次刷新发生时,我的整个类构造函数都会被调用,我只想刷新我的Show函数及其附加的View。 如何避免每次调用此构造函数。控制器在5秒后刷新 - 避免构造函数调用
public class DriverController : Controller
{
OdbcConnection DBConnection; //= new OdbcConnection("DSN=pitbuccx");
OdbcConnection DBConnection2; // = new OdbcConnection("DSN=pitbuccx2");
Query q;
string myQuery;
OdbcCommand cmd;
OdbcCommand cmd2;
OdbcDataReader DbReader;
OdbcDataReader DbReader2;
string LoggedInAgents;
string OnCalls;
string AgentsInReadyState;
string AgentsInNotReadyState;
string AgentsInWrapup;
string ReservedAgents;
string CallsOffered;
string CallsAnswered;
string CallsAbandoned;
string CallsInQueue;
string LongestCallInQueue;
string AbandRate;
string ServiceLevelPct;
string ASA;
string AHT;
string LongestTalkDuration;
public DriverController()
{
OdbcConnection DBConnection = new OdbcConnection("DSN=pitbuccx01");
DBConnection.Open();
OdbcConnection DBConnection2 = new OdbcConnection("DSN=pitbuccx02");
DBConnection2.Open();
q = new Query();
myQuery = q.getQuery();
cmd = DBConnection.CreateCommand();
cmd2 = DBConnection2.CreateCommand();
cmd.CommandText = myQuery;
cmd2.CommandText = myQuery;
Console.WriteLine("This is Constructor");
}
public ActionResult Show()
{
DbReader = cmd.ExecuteReader();
DbReader2 = cmd2.ExecuteReader();
DbReader.Read();
DbReader2.Read();
string testData1;
string testData2;
//Checking Connection Data Validity.
testData1 = DbReader["A"].ToString();
testData2 = DbReader2["B"].ToString();
Response.AddHeader("Refresh", "5");
return View();
}
}
~DriverController()
{
DbReader.Close();
cmd.Dispose();
DBConnection.Close();
DbReader2.Close();
cmd2.Dispose();
DBConnection2.Close();
}
_“如何避免每次都调用这个构造函数。”_ - 你不能默认,你不应该这样做。控制器被初始化以处理一个请求。听起来像是一个XY问题。每五秒运行构造函数有什么问题?你可以创建你自己的控制器工厂,但是,你真的不想。 – CodeCaster
无法停止每次调用构造函数。无论如何,它看起来相当简单,所以没有真正的性能影响(除非'q.getQuery()'需要大量资源) – DavidG
DavidG @ In构造函数调用“Connection.Open”。这是昂贵的功能,我不想每5秒打开一次。需要打开一次,然后每次获取更新的数据 –