public Task Start(Stream stream)
{
TaskCompletionSource<object> completed = new TaskCompletionSource<object>();
var bytes = encoding.GetBytes(text);
stream.BeginWrite(bytes, 0, bytes.Length,
async =>
{
try
{
stream.EndWrite(async);
completed.TrySetResult(null);
}
catch (Exception ex)
{
completed.TrySetException(ex);
}
},
null);
return completed.Task;
}