logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[VS2015] Program typu Console Application - kliknięcie w okienku konsoli

TvWidget 25 Mar 2018 18:46 669 8
REKLAMA
  • #1 17127210
    TvWidget
    Poziom 39  
    Posty: 4424
    Pomógł: 472
    Ocena: 699
    Napisałem w VS2015 program (Console Application). Między innymi wyświetla on różnego rodzaju komunikaty i odbiera połączenia TCP. Wszytko działa tak jak trzeba. Jeśli jednak przy pomocy myszki zaznaczę w okienku konsoli jakiś tekst lub tylko na nim kliknę to aplikacja przestaje odbierać połączenia TCP. Być może przestaje działać całkowicie ale trudno mi to stwierdzić. Bez połączenia TCP nic więcej w niej się nie będzie działo. W programie nie ma żadnego kodu do interakcji z konsolą.
    Czy ktoś może wie co może co może być przyczyną opisanego problemu ?
  • REKLAMA
  • #2 17127364
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1464
    TvWidget napisał:
    Napisałem w VS2015 program (Console Application).


    VStudio, to nie język.
    W jakim języku i na jakich bibliotekach. W jakim stylu utrzymany.

    Jak tą sieć obsługujesz, co z wątkami. Opowieść może dawać dalekie skojarzenia z zamrożeniem głwonego wątku itd... wróżenie z fusów.
    EDIT nie wyobrażam sobie czegoś podobnego gdyby coś takiego pisał.
  • #3 17127590
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Jest to normalne zachowanie aplikacji konsolowych - uruchomienie trybu zaznaczania tekstu powoduje wstrzymanie działania. Możesz sprawdzić puszczając ping z parametrem - t i uruchamiając funkcję "oznacz".
  • REKLAMA
  • #4 17127617
    TvWidget
    Poziom 39  
    Posty: 4424
    Pomógł: 472
    Ocena: 699
    Aplikacja jest napisana w VB (Net 4.0). Wygląda, że połączenia są odbieranie. Program zatrzymuje się w tym fragmencie:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Jeśli wykonam ten kod krok po kroku to wszytko jest OK.
  • #5 17127713
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Bo każda interakcja z konsolą jest operacją I/O, która musi zostać potwierdzona, a potwierdzenia nie dostanie tak długo, jak konsola będzie w trybie zaznaczania.
  • #6 17127724
    TvWidget
    Poziom 39  
    Posty: 4424
    Pomógł: 472
    Ocena: 699
    Jak w praktyce wychodzi się z trybu zaznaczania w konsoli Win10 ?
  • REKLAMA
  • #7 17128362
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    Nie bawiłem się Win10, ale zwykle było to Enter (zaznacz), albo Esc (nie zaznaczaj). Jak masz okienko konsoli to na górnym pasku widzisz słowo Oznacz albo go nie ma.
  • REKLAMA
  • #8 17128645
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1464
    Jeśli ten program to jest jakis trwały dorobek, sugeruję ubranie go w Usługę.
    Konsoli wtedy nie ma wcale, można używac pliku, albo Windows Event Loga.

    I przejrzenie wątków. Daje mi do myślenia, dlaczego zatrzymanie wątku głównego (związanego z konsolą) blokuje wątki obsługujące TCP. Jest myśl teoretyczna, akurat nie miałem podobnych okoliczności.
  • #9 17128724
    TvWidget
    Poziom 39  
    Posty: 4424
    Pomógł: 472
    Ocena: 699
    Program między innymi wyświetla on-line co jest aktualnie przesyłane. Jest to jedna z jego głównych funkcji.
    Można wyłączyć możliwość zaznaczania tekstu we właściwościach okienka konsoli.
    Jak wykazał eksperyment zatrzymywane jest jedynie wykonanie instrukcji Console.WriteLine.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napisał program typu Console Application w Visual Studio 2015, który odbiera połączenia TCP, ale przestaje działać po zaznaczeniu tekstu w oknie konsoli. Odpowiedzi wskazują, że jest to normalne zachowanie aplikacji konsolowych, gdzie interakcja z konsolą w trybie zaznaczania wstrzymuje działanie programu. Sugerowano, że problem może wynikać z blokady głównego wątku, co uniemożliwia obsługę połączeń TCP. Użytkownik zauważył, że można wyłączyć możliwość zaznaczania tekstu w właściwościach konsoli, co może pomóc w rozwiązaniu problemu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA