Jump to content

[Resolvido] Problema Timeout na Ligação


reznor
 Share

Recommended Posts

Bom dia!

Hoje estava a trabalhar numa aplicação que estou a desenvolver e apareceu-me isto:errotimeout.PNG

Já não é a primeira vez que me aparece mas das outras vezes não se manteve como se está a manter agora!

Alguem me consegue dar umas luzes acerca do que se está a passar e como tentar resolver?

Essa função "Notificacoes()" está associada a um timer que a cada X tempo faz o count à BD para verificar a existencia de novos registos!

Obrigado desde já

Link to comment
Share on other sites

Boas,

define a ligação com o using, de modo a certificar que faz o dispose quando não precisar.

Uii isso de erros em portugues 😄 Julgo que ligações em conjunto seja connection pool (?).

Na connection string tambem podes definir um valor maior usando por exemplo Max Pool Size=200

Edited by nelsonr
Link to comment
Share on other sites

Porque não fazes o

cn.Open();

logo a seguir ao SqlConnection?

Já o estou a fazer e o problema mantem-se :\

Boas,

define a ligação com o using, de modo a certificar que faz o dispose quando não precisar.

Uii isso de erros em portugues 😄 Julgo que ligações em conjunto seja connection pool (?).

Na connection string tambem podes definir um valor maior usando por exemplo Max Pool Size=200

Eu creio que o erro é por estar a associar a função ao timer,porque retirei de lá e já funciona, coloquei no form_load e da correcto. A questão é que queria que ficasse no timer para estar sempre a atualizar :\

Link to comment
Share on other sites

Boas,

Só uma pergunta,

estás a usar o close() da ligação no fim? Não poderá ser por existir demasiadas ligações abertas ao mesmo tempo?

Estou sim:

 private void Notificacoes()
	{
		string hoje = DateTime.Now.ToString("yyyy/MM/dd");
		string constring = Classe_Ligacao.cn;
		SqlConnection cn = new SqlConnection(constring); /*Ligação à base de dados*/
		cn.Open();
		SqlCommand cmdCount = new SqlCommand("SELECT count(*) from Pedio WHERE Estado ='Pendente'", cn);
		SqlCommand cmdCountPHALT = new SqlCommand("SELECT count(*) from CopiaPH WHERE DataAlter = '" + hoje + "' AND Razao !=''", cn);
		SqlCommand cmdCountDil = new SqlCommand("SELECT count(*) from CopiaDili WHERE DataAlter = '" + hoje + "' AND Razao !='' ", cn);

		int count = (int)cmdCount.ExecuteScalar();
		if (count > 0)
		{
			toolStripButton4.ForeColor = Color.Red;
			toolStripButton4.Text = count.ToString() + " " + toolStripButton4.Text;
			toolStripButton4.ToolTipText = "Existem " + (count.ToString() + " novas requisições de PED!");
		}
		int countPHALT = (int)cmdCountPHALT.ExecuteScalar();
		if (countPHALT > 0)
		{
			toolStripButton5.ForeColor = Color.Red;
			toolStripButton5.Text = countPHALT.ToString() + " " + toolStripButton5.Text;
			toolStripButton5.ToolTipText = "Existem " + (countPHALT.ToString() + " Alterações de Ped!");
		}
		int countDil = (int)cmdCountDil.ExecuteScalar();
		if (countDil > 0)
		{
			toolStripButton6.ForeColor = Color.Red;
			toolStripButton6.Text = countDil.ToString() + " " + toolStripButton6.Text;
			toolStripButton6.ToolTipText = "Existem " + (countDil.ToString() + " novas alterações em Dilig!");
		}
		else
		{
			return;

		}
		cn.Close();

	}
Edited by reznor
Link to comment
Share on other sites

Obrigado,

pelo que estou a ver a ligação pode não estar a ser fechada.

Se o coutDil retornar 0, estás a fazer return sem fechar a ligação.

Junta todos os ExecuteScalar no mesmo grupo e fecha a ligação, i.e,

int count = (int)cmdCount.ExecuteScalar();

int countPHALT = (int)cmdCountPHALT.ExecuteScalar();

int countDil = (int)cmdCountDil.ExecuteScalar();

cn.Close();

if(count>0)...

ou então tira o return;

Edited by snake8856
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.