У меня есть очень простое консольное приложение C #, которое подключается к БД, выполняет запрос, закрывает соединение и выходит из приложения.
Проблема в том, что приложению требуется почти 3 секунды для выхода.
Я отображал время на каждом шаге, чтобы понять, почему он работает медленно, а не во время какой-либо обработки, а только когда он выходит из приложения.
Кто-нибудьзнаете, как ускорить это?
Вот вывод:
Разрывное соединение: 94мс
26: ОК
Закрывающее соединение: 356мс
Закрытое соединение: 357мс
Выход: 358 мс
[Задержка около 3 секунд до выхода]
А вот код:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
namespace CheckSQL
{
class Program
{
static Stopwatch watch = new Stopwatch();
static void Main(string[] args)
{
if (args.Length == 0) return;
watch.Start();
string connstring = args[0];
string sqlquery = args[1];
ExecuteScalar(connstring, sqlquery);
watch.Stop();
Console.WriteLine(string.Format("Exiting:{0}ms", watch.ElapsedMilliseconds));
}
private static void ExecuteScalar(string connstring, string sqlquery)
{
SqlConnection sqlconn = new SqlConnection(connstring);
SqlCommand sqlcmd = new SqlCommand(sqlquery, sqlconn);
try
{
Console.WriteLine(string.Format("Opening Connection:{0}ms", watch.ElapsedMilliseconds));
sqlconn.Open();
Console.WriteLine(string.Format("{0}:OK", sqlcmd.ExecuteScalar()));
}
catch (Exception ex)
{
Console.WriteLine(string.Format("0:{0}", ex.Message));
}
finally
{
if (sqlconn.State == ConnectionState.Open)
{
Console.WriteLine(string.Format("Closing Connection:{0}ms", watch.ElapsedMilliseconds));
sqlconn.Close();
Console.WriteLine(string.Format("Closed Connection:{0}ms", watch.ElapsedMilliseconds));
}
}
}
}
}