Beispiel #1
0
 public static async Task <int> WriteFileAsync <T>(SafeObjectHandle handle, ArraySegment <T> arraySegment,
                                                   CancellationToken cancellationToken = default(CancellationToken))
     where T : struct
 {
     using (var asFixed = new FixedArraySegment <T>(arraySegment))
     {
         return(await WriteFileAsync(handle, asFixed.Pointer, asFixed.SizeInBytes, cancellationToken));
     }
 }
Beispiel #2
0
        public static async Task <ArraySegment <T> > ReadFileAsync <T>(SafeObjectHandle handle, int numberOfElementsToRead,
                                                                       CancellationToken cancellationToken = default(CancellationToken))
            where T : struct
        {
            var buffer  = new T[numberOfElementsToRead];
            var segment = new ArraySegment <T>(buffer);

            using (var asFixed = new FixedArraySegment <T>(segment))
            {
                var bytesRead = await ReadFileAsync(handle, asFixed.Pointer, asFixed.SizeInBytes, cancellationToken);

                var elementsRead = bytesRead / asFixed.ElementSize;

                return(new ArraySegment <T>(buffer, 0, elementsRead));
            }
        }