I have very similar code when using the standard BeginRead and EndRead methods from the TcpClient and using Task.Factory.FromAsync.
Here are some examples.. Error handli
I would much rather see Task<T>
based code:
Task<T>
tasks and returns another task which represents the majority verdict of those tasks. Likewise you can wait until any one of a collection of tasks has completed, etc.IAsyncResult
type returned by BeginRead
.Task<T>
is getting better language support in C# 5 with async/await - if your codebase already uses Task<T>
pervasively, it'll be much easier to take advantage of thisBasically in modern code running on .NET 4, Task<T>
is the idiomatic way of representing an on-going task. It's a much richer environment to work in than earlier attempts, and I would embrace it if you have the chance. Obviously if you're using .NET 3.5 or earlier, life is a bit harder, but I'm assuming that as you're asking the question, Task<T>
is an option...