我想重写一个异步TCP类,我曾经写过实现新的await/async构造。自定义异步/等待
到目前为止,我有
public async void Send(byte[] data)
{
await SendAsync(data);
}
private Task SendAsync(byte[] data)
{
var stream = _tcpClient.GetStream();
return new Task(()=>stream.Write(data, 0, data.Length));
}
但一些奇怪的气味。这是做这件事的正确方法吗?
编辑:
例如,我可以
public async void Send(byte[] data)
{
await SendAsync(data);
var stream = _tcpClient.GetStream();
await Task.Factory.StartNew(()=>stream.Write(data, 0, data.Length));
}
或使用Task.Run(..)
这是优选的实现相同?
你没有开始任务,这是故意的吗? –
什么味道奇怪?这是一个很正常的方式。我只会建议将'stream'作为参数传递给任务。 –
@Erno no。我将如何开始它? – kasperhj