新しい await/async コンストラクトを実装して、かつて書いた非同期 TCP クラスを書き直そうとしています。
これまでのところ、
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(..) を使用
どちらが好ましいですか?