Tagi na forum.

C# 1456 XML 282
SQL 1192 sieci 268
ASP.NET 785 IIS 262
Windows 726 C++ 255
web 608 Html 218
Visual Studio 515 Information Technology 193
SQL Server 425 MSDN 167

pokaż wszystkie tagi na forum

Samowolne zamykanie aplikacji .NET 3.5, MySQL Connector

adrian86 2011-10-17 14:45:59
0
avatar
 
 

Witam,
napisałem program w .NET 3.5 używając MySQL Connector (http://www.mysql.com/products/connector/) w celu możliwości połączenia z zewnętrzną bazą MySQL.  Mój problem dotyczy tego, że raz na jakiś czas (nie są to stałe okresy) następuje samowolne wyłączenie aplikacji, bez jakiejkolwiek informacji (nagle znika i nie ma instancji programu w pamięci).

Dodatkowe informacje, które mogą się przydać do rozwiązania problemu:

  • dzieje się to tylko w programach działających przez internet (z dala od serwera z  bazą danych) (użytkownicy mówią, że przy obciążeniu sieci)
  • nie ma tego problemu na maszynie która jest podłączona przez siec lokalną do serwera na którym znajduję się baza danych.
  • wyłączenie antywirusów i firewall' nic nie pomogło

Prosiłbym o wszystkie możliwe pomysły na przyczynę takiego zjawiska oraz jak można temu zapobiec.


tagi: mysql
Liczba postów:

szogun.krepa  2011-10-17 15:22:21 #1
0
avatar
 
 

Czy aplikacja zamyka się poprawnie tylko nagle? Czy jednak z błędem (komunikat windowsowy że aplikacja przestała działać)?

Czy masz w aplikacji Globalne przechwytywanie Wyjątków (Klasa Application posiada odpowiednie zdarzenia)?


if (PomoglCi)

{

Click("Pomógł mi");

}

Strona szoguna

adrian86  2011-10-17 15:57:31 #1.1
0
avatar
 
 

Nic się nie pojawia. Zamyka się poprawnie nagle. Nie wyskakują krytyki.
Co to znaczy globalne przechwytywanie wątków? Możliwe, że nie.  Mam następujący fragment kodu:

[STAThread]
static void Main()
{
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new FormMain());
}


FormMain główna forma, gdzie mam obsługę programu  i też system logów, które nie wskazują konkretnie źródła błędu. Czy to może byc wina jakiegoś błędu klasy Application i w takim przypadku nie wyskakuje żaden błąd systemowy (windowsowy) ?


Edytowano 1 raz. Ostatnio 2011-10-17 15:58:51 przez adrian86.
szogun.krepa  2011-10-17 21:39:28 #1.1.1
1
avatar
 
 

Klasa application ma zdarzenia statyczne ApplicationExit i ThreadException sproboj je obsluzyc i zobacz czy podczas wywalki kod w nie wchodzi


if (PomoglCi)

{

Click("Pomógł mi");

}

Strona szoguna

pejterr1@tlen.pl  2011-11-03 17:57:33 #1.1.2
1
avatar
 
 

Przeszukaj aplikacje, sprawdź miejsca gdzie odpytujesz się bazy w oddzielnym wątku (jeśli takie masz), albo Timer'ach, backGroundWorker'ach ??

Wywołania te obsłuż blokiem try catch np.

public void StarrtMe()

{

Thread thr =  new Thread(DoStartMe){IsBackGroud = true};thr.Start();

}

private void DoStartMe()

{

try{

//cos tam na bazie:)

}

catch(Exception ex){MessageBox.Show(ex.ToString());}

}

Też chyba miałem kiedyś podobny problem. Jeśli aplikacja nagle się zamyka, to na bank gdzieś sypie wyjątkiem i prawdopodobnie jest to w jakimś wywołaniu asynchronicznym.

Oczywiście, tak jak pisze szogun, obsłuż zdarzenia  Application przed wywołaniem Application.Run(new FormMain());.


adrian86  2011-11-29 14:46:29 #2
0
avatar
 
 

Rozwiązałem problem.  Obsługa wyjątków Application nie pomogła. 

Tak jak piszesz pejterr1@tlen.pl, pobieranie bazy było w osobnym wątku i wysypywało się na pobieraniu danych z bazy mySQL.

Okazało się że do obsługi tamtejszych wyjątków w bibliotece MySQL Connector, nie można używać wyjątków Exception, bo to nic nie dawało, ale trzeba było skorzystać z wbudowanego w bibliotekę  MySQLException.  Zamiana obsługi na ten typ wyjątku, rozwiązało problem.


Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony