我正在尝试重新编写一个异步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(..)
哪个更好?