public async Task ExecuteAsync(object opts, CancellationToken cancellationToken) { var options = (DumpOptions)opts; // Use the internal PageFile class to open up the specified file. var pageFile = new PageFile(); await pageFile.OpenAsync(options.DBFileName, cancellationToken); // If they want to dump a specific page, do so. if (options.PageNum.HasValue) { var page = await pageFile.ReadPageAsync(options.PageNum.Value, cancellationToken); DumpPage(options.PageNum.Value, page); } else { // Get the number of pages var numPages = pageFile.NumPages; Console.WriteLine("Num Pages: {0}", numPages); Console.WriteLine(); Console.WriteLine("Page Description"); Console.WriteLine("---- -----------"); // Iterate through all the pages, and print a summary of each for (var i = 0; i < numPages; i++) { var page = await pageFile.ReadPageAsync(i, cancellationToken); Console.WriteLine("{0,4} {1}", i, page.ToString()); } } }