private BinaryReader br; private TcpClient client public void Connect() { client = new TcpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1313)); br = new BinaryReader(client.GetStream()); } private Task taskReceive; public object lockDane = new object(); public List<string> dane = new List<string>(); public void BeginReceive() { taskReceive = Task.Factory.StartNew(() => { while (true) { string str = br.ReadString(); lock (lockDane) dane.Add(str); } }); } public void EndReceive() { taskReceive.Abort(); // nie ma takiej metody w task }
Witam. Mam mniej więcej taki problem. Nie mam pojęcia jak zaimplementować metodę EndReceive, aby działała dobrze. W thread używałem metody abort ale w task jej nie ma. Także i takie coś https://stackoverflow.com/questions/4783865/how-do-i-abort-cancel-tpl-tasks jest dla mnie złe bo odbieranie blokuje wątek i może trwać nawet kilka minut, a ja chcę aby EndReceive zadziałało natychmiast. Jak sobie z tym poradzić?