我正在尝试重写我曾经编写的异步 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(..)
哪个是首选?