写法一:
public class MainViewModel
{
private readonly TaskScheduler _backgroundTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
public void StartConcurrentTask()
{
Task.Factory.StartNew(() =>
{
// 执行耗时操作
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Concurrent Task: " + i);
Thread.Sleep(1000);
}
}, CancellationToken.None, TaskCreationOptions.None, _backgroundTaskScheduler);
}
}
写法二:
public static async Task SunAsync()
{
var t = Task.Run(()=>{
System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId} New Task~");
for(int i=0 ; i<10; i++)
{
Thread.Sleep(1000);
System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId} I am playing game...");
}
});
System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId} After Task, before await.");
Thread.Sleep(15000); //主线程睡15秒
await t;
System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId} After await, before SunAsync() exit.");
}