Zmiana tytulu na taki, ktory uwazacie za lepiej opisujacy problem mile widziana;)
Witam,
mam ciekawy problemik, ktory wydaje sie banalny – tylko rozwiazania brakuje.
W solucji mamy m.in. maly InterfejsManager – ten projekt jest aplikacja konsolowa, ktora jest uruchamiana przez odpowiedni SQL Server produkcyjny (cykliczny Job w Sever Agent) – w zaleznosci od przekazanego parametru – rozne interfejsy tworza pliki wysylane do roznych serwisow/innych zewnetrznych programow (BW, SAP, CAQ Charge, CAQ Reklamacje i… n-innych ) – ten FileTransfer jest powiedzmy „uwarunkowany historycznie“ – i w tej chwili nie do zmienienia – zbyt wiele zewnetrznych odbiorcow. (Wiec please pominmy pytania. komentarze i rady pt: A moze serwis… a czemu konsola ;) ).
Ogolnie dziala sobie ten mini podprogramik radosnie. Jedna z metod tworzy pliki dla CAQ Charge.
Dotychczas metoda tworzyla odpowiednie listy obiektow roznych klas, przetwarzala, liczyla i „lista koncowa“ byla wysylana do pliku.
Aby jednak poprawic przejrzystosc powinnien zostac ten caly "kram liczacy" przeniesiony do osobnej klasy. Wiec plum... nowa klasa powiedzmy CaqMaker
plus metoda
public List<CaqChargenMld> GetCaqChargen(string interName, Datetime tstart, Datetime tEnde)
using (nowy DBkontext)
{
//skopiowany kod z poprzedniego miejsca – jako taki dziala bez zarzutu (bo i czemu nie - nic sie przeciez nie zmienilo)
return liste….
}
w samym Managerze zamiast calego oryg. kodu, po prostu:
var instance = new CaqMaker();
var listaChargeMld = instance. GetCaqChargen(charge, jakasData, jakasData)
I teraz problemik. Startuje, otwiera konsole, tworzy instancje, wywoluje metode – ona cala dziala jak nalezy – wewnatrz metody kazdy krok poprawnie sie protokoluje, poprawnie tworzy „liste koncowa“ dochodzi do return, wychodzi z metody i… cale studio wisi.
Zadnego Exception, VS wysyla info ze jest zajete („Visual Studio waiting on internal operation to complete. If bla bla to long blabla inform MS.“).
W managerze nic nie dziala, na callStack nie mam zadnych infos, output nie pokazuje bledu.
TaskManager tez nie wskazuje na jakies obliczenia/dzialania, jakby VS na cos czekalo.
Jezeli wezme ten sam kod – copy/paste w { } – zamiast wywolania metody – dziala jak zawsze - czyli dobrze.
Wiem – mozna zostawic jak bylo, ale to nie zaspokaja ciekawosci i nie jest oczekiwanym rozwiazaniem ;)
Gdzie szukac… bo pewnie nie widze drzew chcociaz stoje w lesie :)
Acha - tak dla testu zamienilem return liste na return null i wyrzucilem using - co naturalnie zgodnie z oczekiwaniem nic nie zminilo, hihihi. Ale sprawdzone jest...
WTF :)?