Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: night w Maj 22, 2018, 06:37:39

Tytuł: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: night w Maj 22, 2018, 06:37:39
Uszanowanie,
problem następujący; nie jestem w stanie uruchomić Subiekta przez Sferę, gdy próbuję to zrobić przez usługę systemową (windows service). Z aplikacji okienkowej działa elegancko.

Na forum znalazłem nieco odległy od tematu wątek nt. ASP .NET. Próbuję następującej składni:
Thread watekSubiekta = new Thread(() =>
{
insertGT.polacz();
SuDokument dokFS;

[..]

});
watekSubiekta.SetApartmentState(ApartmentState.STA);
watekSubiekta.Start();
}

Jakkolwiek dostaję jedynie błąd w logu:

Cytuj
Opis: proces został przerwany z powodu nieobsłużonego wyjątku.
Informacje o wyjątku: System.Runtime.InteropServices.COMException
   w InsERT._GT.Uruchom(Int32, Int32)
   w usluga1.insertGT.polacz()
   w usluga1.klasaX+<>c__DisplayClass2_0.<metodaY>b__1()
   w System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   w System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   w System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   w System.Threading.ThreadHelper.ThreadStart()

Wszystko wywala się w miejscu, gdy w klasie insertGT wykonywane jest:
sgt = (Subiekt)gt.Uruchom((int)UruchomDopasujEnum.gtaUruchomDopasuj, (int)UruchomEnum.gtaUruchomWTle | (int)UruchomEnum.gtaUruchom);
Gorąca prośba o pomoc.

PS: bez zamykania procesu Subiekta w wątku STA, błędu nie ma... działania też nie.

Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: dkozlowski w Maj 22, 2018, 10:11:11
Na jakim użytkowniku jest uruchamiana ta usługa ?
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: night w Maj 22, 2018, 11:12:26
Próbowałem różnie. Obecnie: Usługa Sieciowa
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: dkozlowski w Maj 22, 2018, 11:21:42
Czyli zgaduję dalej... Mam rozumieć, że na użytkowniku, na którym "działa elegancko" i z widocznym interfejsem również ?
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: night w Maj 22, 2018, 13:59:26
Edit. Nic nie mówiłem, faktycznie usługa powinna pracować z kontem użytkownika.
Dziękuję i pozdrawiam

Dla potomnych: Visual Studio CTRL+ALT+P pozwala na debugowanie usług. :)
Pozdrawiam!
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: butik_slubice w Marzec 24, 2020, 15:32:13
Nie chce otwierać nowego tematu więc piszę tutaj.

Otóż mam identyczny problem. Uruchamiam usługę na użytkowniku (zgodnie z zaleceniem). Uruchamiam także w oddzielnym wątku STA (tak jak w pierwszym poście) i dalej nic.

0xFFFFFFFF
   w InsERT.GTClass.Uruchom(Int32 TypDopasowania, Int32 TypUruchomienia)
   w SubiektConnect.MyInsert.<>c__DisplayClass9_0.<run>b__0()

Mój kod
Thread watekSubiekta = new Thread(() =>
            {
            System.IO.File.AppendAllText(@"SubiectConnectLog.txt", "Uruchomiłem wątek\n");
            GT gt = new InsERT.GT();
            gt.Produkt = ProduktEnum.gtaProduktSubiekt;
            gt.Baza = MyInsert.databaseName;
            gt.Serwer = MyInsert.datasource;
            Subiekt subiekt;
            try
            {
                if (MyInsert.user != null && MyInsert.user.Length > 0)
                {
                    gt.Autentykacja = AutentykacjaEnum.gtaAutentykacjaMieszana;
                    gt.Uzytkownik = MyInsert.user;
                    gt.UzytkownikHaslo = MyInsert.pass;
                }
                else
                    gt.Autentykacja = AutentykacjaEnum.gtaAutentykacjaWindows;

                subiekt = (Subiekt)gt.Uruchom((int)InsERT.UruchomDopasujEnum.gtaUruchomDopasuj, (int)InsERT.UruchomEnum.gtaUruchom);

            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(@"Log.txt", "Błąd\n" + ex.Message + "\n" + ex.StackTrace);
               //  int num = (int)MessageBox.Show(ex.Message, "Wystąpił błąd", MessageBoxButtons.OK);
            }
            ...
});
            watekSubiekta.SetApartmentState(ApartmentState.STA);
            watekSubiekta.Start();

Czy ktoś z Was ma pomysł dlaczego?
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: dkozlowski w Marzec 24, 2020, 15:46:22
Co to znaczy "nic" ? Jest generowany jakiś wyjątek czy nie ? Jeśli tak to w którym miejscu (linii kodu) ? To co na szybko zauważyłem to NIE zastosowanie się do zaleceń i przykładów z tego wątku - dlaczego uruchamiasz program z interfejsem użytkownika - przecież jeśli program będzie czekał na interakcję z użytkownikiem (na przykład na podanie poprawnego hasła) to uzyskasz efekt zawieszonego programu ? Dlaczego nie zamykasz programu ?
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: butik_slubice w Marzec 24, 2020, 16:24:03
Co to znaczy "nic" ? Jest generowany jakiś wyjątek czy nie ? Jeśli tak to w którym miejscu (linii kodu) ? To co na szybko zauważyłem to NIE zastosowanie się do zaleceń i przykładów z tego wątku - dlaczego uruchamiasz program z interfejsem użytkownika - przecież jeśli program będzie czekał na interakcję z użytkownikiem (na przykład na podanie poprawnego hasła) to uzyskasz efekt zawieszonego programu ? Dlaczego nie zamykasz programu ?

Bardzo dziękuję za szybką odpowiedź. Leci wyjątek w linii przy uruchamianiu(gt.Uruchom()):

HRESULT: 0x8004132B
   w InsERT.GTClass.Uruchom(Int32 TypDopasowania, Int32 TypUruchomienia)
   w SubiektConnect.MyInsert.<>c__DisplayClass9_0.<run>b__0()

Uruchamiam jak kolega w pierwszym poście. zmieniłem na opcję UruchomEnum.gtaUruchomWTle:

 subiekt = (Subiekt)gt.Uruchom((int)InsERT.UruchomDopasujEnum.gtaUruchomDopasuj, (int)InsERT.UruchomEnum.gtaUruchomWTle);
niestety bez zmian. Ten sam wyjątek w tej samej linii.
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: dkozlowski w Marzec 24, 2020, 17:41:40
Dlaczego nie sprawdziłeś co oznacza zacytowany komunikat błędu ?
Tytuł: Odp: Wywoływanie Sfery przez usługę systemową
Wiadomość wysłana przez: butik_slubice w Marzec 24, 2020, 23:06:54
Dlaczego nie sprawdziłeś co oznacza zacytowany komunikat błędu ?

Dzięki - poprzednio miałem bład 0xFFFFFFFF, po zmianie na uruchamianie w tle nie zauważyłem zmiany numerku. Już sobie poradziłem. Dzięki za pomoc.