DEMO:
private async static void TestTasks()
{
Console.WriteLine("主线程开始");
//for (var i = 0; i < 5; i++)
//{
// Task<string> task = Task<string>.Run(() =>
// {
// Thread.Sleep(1000);
// Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
// return Thread.CurrentThread.ManagedThreadId.ToString();
// });
// ////会等到任务执行完之后执行
// //task.GetAwaiter().OnCompleted(() =>
// //{
// // Console.WriteLine(task.Result);
// //});
//}
System.Diagnostics.Stopwatch watch1 = new System.Diagnostics.Stopwatch();
watch1.Start();
for (int i = 1; i <= 10; i++)
{
Console.Write(i + ",");
Thread.Sleep(1000);
watch1.Start();
for (int i = 1; i <= 10; i++)
{
Console.Write(i + ",");
Thread.Sleep(1000);
//Task<string> task = Task<string>.Run(() =>
//{
// Thread.Sleep(1000);
// //Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
// return Thread.CurrentThread.ManagedThreadId.ToString();
//});
////会等到任务执行完之后执行
//task.GetAwaiter().OnCompleted(() =>
//{
// Console.WriteLine(task.Result);
//});
}
watch1.Stop();
Console.WriteLine("watch1:" + watch1.Elapsed);
//{
// Thread.Sleep(1000);
// //Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
// return Thread.CurrentThread.ManagedThreadId.ToString();
//});
////会等到任务执行完之后执行
//task.GetAwaiter().OnCompleted(() =>
//{
// Console.WriteLine(task.Result);
//});
}
watch1.Stop();
Console.WriteLine("watch1:" + watch1.Elapsed);
System.Diagnostics.Stopwatch watch2 = new System.Diagnostics.Stopwatch();
watch2.Start();
//会调用线程池中的线程
Parallel.For(1, 10, i =>
{
Console.WriteLine(i + ",线程ID:" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
});
watch2.Stop();
Console.WriteLine("watch2:" + watch2.Elapsed);
Console.WriteLine("主线程结束");
Console.Read();
Console.Read();
}