我想重寫一個異步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