Xamarin Public Jenkins (auto-signing) e79aa3c0ed Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
2016-08-03 10:59:49 +00:00

52 lines
1.0 KiB
C#

using System;
using System.IO;
using System.Threading;
class Test {
static int sum = 0;
static int count = 0;
static void async_callback (IAsyncResult ar)
{
byte [] buf = (byte [])ar.AsyncState;
Interlocked.Add (ref sum, buf [0]);
Interlocked.Increment (ref count);
}
static int Main () {
byte [] buf = new byte [1];
AsyncCallback ac = new AsyncCallback (async_callback);
IAsyncResult ar;
int sum0 = 0;
int count0 = 0;
FileStream s = new FileStream ("async_read.exe", FileMode.Open, FileAccess.Read);
s.Position = 0;
while (s.Read (buf, 0, 1) == 1) {
sum0 += buf [0];
count0 ++;
}
s.Position = 0;
do {
buf = new byte [1];
ar = s.BeginRead (buf, 0, 1, ac, buf);
} while (s.EndRead (ar) == 1);
Thread.Sleep (100);
s.Close ();
count0 ++; // async_callback is invoked for the "finished reading" case too
Console.WriteLine ("CSUM: " + sum + " " + sum0);
Console.WriteLine ("Count: " + count + " " + count0);
if (sum != sum0 || count != count0)
return 1;
return 0;
}
}