Tak jest to zachód oraz o podobnej blokadzie mówiłem, troszkę inne rozwiązanie znalazłem. A tak jeszcze do tego wygląda sama funkcja wywołująca u mnie okno WW
App_WindowsSettings.Window.WaitWindow.IsBusy = true; // Wlaczenie busy industora
App_WindowsSettings.Window.WaitWindow.BusyContent = "Logowanie ...";
Task.Factory.StartNew(() =>
{
//DoWorkonWW() wykonuje się w tle
}
).ContinueWith((task) =>
{
App_WindowsSettings.Window.WaitWindow.IsBusy = false;
// DoWorkFinisch() wykonuje sie już po
}, TaskScheduler.FromCurrentSynchronizationContext()
);
Ogólnie nie narzekałem na początku, kiedy mechanizmy opierały się maxymalnie na paru etapach wykonywania czynności. Problem zaczyna się robić w momencie jak trzeba.
Pobrać dane z pliku, wrzuciś do storaga, sprawdzić konfigurację wrzucić wszystko do słownika potem wysłać do API. Następnie sprawdzić odpowiedź przeprowadzić despiralizację oraz wyświetlić elementy obiektu i przypisać do klasy manipulacyjnej. A potem jeszcze logi do tego zapisać.
To tak to rozwiązanie jest strasznie uciążliwe. Patrząc na przykład podpięcia klasy WaitWindow w Windows formie. I przyblokowanie okna oraz akcji wykonującej opiera się na prostej czynności
Blok kodu
{
.....xczxcz;
xczcxczz;
Jacksonsoft.WaitWindow.Show(this.DoSomthingOnWW); // Wywołanie okna WaitWindow oraz co ma się zrobić
DoEctr();
}
private void DoSomthingOnWW(object sender, Jacksonsoft.WaitWindowEventArgs e)
{
Co się ma wykonać w tle.
}
I tutaj nie ma problemów. Żadnego niezbędnego poświęcania czasu jak to rozbić, żeby działało itp. Ogólnie większość mi działa poprawnie. Ale jak gdzieś przeoczyłem blokadę. Mojego WW to tracę dane. Np przy automatycznym pobieraniu klienta. Zrobiłem klasę manipulacyjną do pobierania rożnych konfiguracji klientów. I niestety jak w logach sprawdzałem to dla 2 logik, klient dobrze pobrany lecz zapisywanie już informacji końcowych o nim kończyło się że wysyłałem na ID 0.
A tak nawiasem mówiąc, dopiero się uczę ^^ Jest to moja pierwsza praca jako programista i robię od jakiś 2 miesięcy. Do tego jestem całkiem sam od .Net oraz C# ;/// Więc nawet nie mam kogo iść się spytać o pomoc czy radę.