public async Task <MatrixRowResponse> GetRow(Char matrix, int rowNum) { return(await WithRetry(async() => { MatrixRowResponse row = null; var response = await SendHttpRequest(HttpMethod.Get, String.Format("{0}/{1}/row/{2}", URL, matrix, rowNum), null); response.EnsureSuccessStatusCode(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { row = await response.Content.ReadAsAsync <MatrixRowResponse>(); } return row; })); }
static void Main(string[] args) { IApiService api = new ApiService(); int rowCount = 1000; Int32[][] matrixA = new Int32[rowCount][]; Int32[][] matrixB = new Int32[rowCount][]; Task task = Task.Run(async() => { Boolean initialized = await api.Initialize(rowCount); if (initialized) { for (int i = 0; i < rowCount; i++) { MatrixRowResponse matrixARow = await api.GetRow('A', i); matrixA[i] = matrixARow.Value; MatrixRowResponse matrixBRow = await api.GetRow('B', i); matrixB[i] = matrixBRow.Value; } var watch = System.Diagnostics.Stopwatch.StartNew(); Int32[][] matrixC = MultiplyMatrices(matrixA, matrixB); watch.Stop(); int elapsed = (int)watch.ElapsedMilliseconds; Console.WriteLine(String.Format("Multiplication took {0} milliseconds", elapsed)); Boolean validated = await api.Validate(GetMatrixMD5Hash(matrixC)); Console.WriteLine(String.Format("Result is validate: {0} ", validated)); } }); task.Wait(); Console.ReadLine(); }