2011-03-26 37 views
12

bir bağlantı elde öncesinde ben hata var geçen. Beklemeye çalışıyorum, o zaman ben An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll hata aldım ama çok eski yazılan hata var. Sadece istisna olmayan yeni bir komut yazarım. [İlk çalıştırma hatası önce hata olduğunu düşünüyorum, böylece tüm yeni hatalar asla istisna veremez].zaman aşımı süresi havuzu

Bu sorunu çözmek için ne yapmam gerekiyor.

cevap

27

Hata, bağlantı havuzunun bağlantıların dışında olduğu anlamına gelir. Kullandıktan sonra her zamanki sebebi gibi bir bağlantı kapatmak için unutuyor:

var con = new MySqlConnection("Server=YourDB;Database=YourDb;..."); 
con.Open(); 
var com = con.CreateCommand(); 
com.CommandText = "select * from YourTable"; 

Bu kod bağlantısını kapatmak için unutur, bu yüzden havuz bir eksik bağlantısı vardır. Sonunda aşağıdakileri ekleyerek bunu düzeltebilirsiniz:

con.Close(); 

. Ancak, sorgu bir istisna atarsa, Close atlanacak ve hala 1 bağlantıdasınız. Bu size bir havuz verir

Server=YourDB;Database=YourDbUid=YourUser;Pwd=YourPwd;max pool size=1; 

:

using (var con = new MySqlConnection("Server=YourDB;Database=YourDb;...")) 
{ 
    con.Open(); 
    var com = con.CreateCommand(); 
    com.CommandText = "select * from YourTable"; 
} 

Sen gibi tring bağlantınızın sonunda max pool size ekleyerek bu kolayca giderebilirsiniz:

bir çok daha iyi bir yol using ifadesi Bir bağlantınızı boşaltmayı unutursanız, hemen 1 hata boyutunu tetikler.

+5

+1 Hata ayıklama amacıyla havuz boyutunu 1 olarak ayarlamak konusunda büyük öneri. Bu bana çok yardımcı oldu. – LeopardSkinPillBoxHat

+0

thx adam bu cevap benim de sorunum –

+0

Mevcut havuz boyutunu almak mümkün mü? – Protocole

İlgili konular