Egy gomb lenyomásával miért fagy le a program?
Figyelt kérdés
Készítettem C#-ban egy programot, és ha a felhasználó lenyom egy gombot, az alábbiakat hajtja végre:
TcpListener listener = new TcpListener(IPAddress.Any, int.Parse(ServerPorttextBox.Text));
listener.Start();
client = listener.AcceptTcpClient();
STR = new StreamReader(client.GetStream());
STW = new StreamWriter(client.GetStream());
STW.AutoFlush = true;
backgroundWorker1.RunWorkerAsync();
backgroundWorker2.WorkerSupportsCancellation = true;
Valakinek esetleg van ötlete, hogy miért fagy le? És mi lehetne erre a megoldás?
2019. dec. 10. 10:56
1/2 anonim válasza:
Mert az AcceptTcpClient() blokkol, amíg nem csatlakozik egy kliens.
Aszinkron indítsd a várakozást, vagy ne a fő szálon.
2/2 anonim válasza:
Async lesz a megoldás, ahogy az #1-es is mondta. Ha szinkronos függvényeket használsz, akkor azok blokkolni fogják a UI-t, amíg nem fejeződik be a végrehajtásuk.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!