public async Task<byte[]> BlobReadAsync(ulong blobId, long position, long count, CancellationToken cancellationToken = default(CancellationToken)) {
if (_runTask == null) {
throw new InvalidOperationException("Host was not started");
}
using (CancellationTokenUtilities.Link(ref cancellationToken, _cts.Token)) {
try {
await TaskUtilities.SwitchToBackgroundThread();
var request = await BlobReadRequest.ReadAsync(this, blobId, position, count, cancellationToken);
return await request.Task;
} catch(OperationCanceledException ex) when (_cts.IsCancellationRequested) {
throw new RHostDisconnectedException(Resources.Error_RHostIsStopped, ex);
}
}
}