1
我有一个窗口服务,这是执行定期...这里是代码片段:Windows服务和mutilthreading
protected override void OnStart(string[] args)
{
tickTack = new Timer(10000);
tickTack.Elapsed += new ElapsedEventHandler(tickTack_Elapsed);
tickTack.Start();
}
protected override void OnStop()
{
tickTack.Stop();
}
private void tickTack_Elapsed(object sender, ElapsedEventArgs e)
{
objProc = new Processing();
objProc.start();
}
在我处理类的start()
方法做我的实际工作中像下面。
public void start()
{
try
{
Process_Requests();
Process_Exports();
}
catch (Exception ex)
{
ErrorLogs.SaveError(ex, "");
}
}
执行在单线程中完成时如何发生?例如,第一种方法需要时间来执行,那么第二种方法呢?
现在我想拨打Process_request()
和Preocess_export()
方法。每种方法都应连接到多个数据库。在这种情况下,我是否需要为每个连接创建新线程并开展工作......我不确定。
public void start()
{
try
{
#region
sqlConObjects = new List<SqlConnection>();
// Here i am getting multiple connection strings
List<string> conStrings = GetConnectionStrings();
foreach (string strCon in conStrings)
{
SqlConnection sqlCon = new SqlConnection(strCon);
sqlConObjects.Add(sqlCon);
}
foreach (SqlConnection sqlCon in sqlConObjects)
{
//sqlCon.Open();
Thread t = new Thread(ProcessRequest);
t.Start((object)sqlCon);
Thread t1=new Thread(ProcessExports);
t1.Start((object)sqlCon);
}
#endregion
}
catch (Exception ex)
{
ErrorLogs.SaveError(ex, "");
}
}
任何人都可以请解释如何做到这一点...是线程创建或不需要?如果我们不为每个连接对象创建线程,应该如何执行。