/*****************************两个互相不依赖的方法******************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Method1();
Method2();
Console.Read();
}
public static async Task Method1()
{
await Task.Run(() =>
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine("Method 1");
}
});
}
public static void Method2()
{
for (int i = 0; i < 25; i++)
{
Console.WriteLine("Method 2");
}
}
}
}
/************************Method3依赖于Method1()的返回***********************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
CallMethod();
Console.Read();
}
public static async void CallMethod()
{
Task<int> task = Method1();
Method2();
int count = await task;
Method3(count);
}
public static async Task<int> Method1()
{
int count = 0;
await Task.Run(() =>
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine("Method 1");
count += 1;
}
});
return count;
}
public static void Method2()
{
for (int i = 0; i < 25; i++)
{
Console.WriteLine("Method 2");
}
}
public static void Method3(int count)
{
Console.WriteLine("Total count is " + count.ToString());
}
}
}
/***************************异步方法API的使用********************************************/
包含异步方法的API有HttpClient,SyndicatonClient,StorageFile,StreamWriter,StreamReader,XmlReader,MediaCapture,BitmapEncoder,BitmapDecoder等
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Task task = new Task(CallMethod);
task.Start();
task.Wait();
Console.Read();
}
private static async void CallMethod()
{
string filePath = @"d:\sampleFile.txt";
Task<int> task = ReadFile(filePath);
Console.WriteLine("Other work 1");
Console.WriteLine("Other work 2");
Console.WriteLine("Other work 3");
int length = await task;
Console.WriteLine("Total length:" + length);
Console.WriteLine("After work 1");
Console.WriteLine("After work 2");
Console.ReadLine();
}
static async Task<int> ReadFile(string file)
{
int length = 0;
Console.WriteLine("File reading is starting");
using (StreamReader sr = new StreamReader(file))
{
string s = await sr.ReadToEndAsync();
length = s.Length;
}
Console.WriteLine("File reading is completed");
return length;
}
}
}