码迷,mamicode.com
首页 > 其他好文 > 详细

异步的几种方法

时间:2017-11-27 18:49:07      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:https   log   get   tail   void   blank   define   turn   www   

await&&async

可以返回,返回只有有操作时首选

public async Task AsyncMethod1()
{
    HttpClient client = new HttpClient();
    await client.GetAsync("https://www.baidu.com/");
}

public async Task<byte[]> AsyncMethod2()
{
    WebClient client = new WebClient();
    return await client.UploadFileTaskAsync("", "");
}

Task Run/.Factory.StartNew…..

新开一个线程,完成某项工作,不需要返回,没有后续操作首选

public void TaskMethod()
{
    //Task.Run
    Task.Run(() =>
    {

    });

    Task.Run(async () =>
    {
        await AsyncMethod1();
    });

    //Start
    Task t = new Task(Method1);
    t.Start();

    //Task.Factory.StartNew  创建并启动
    t = Task.Factory.StartNew(Method1);

    Task t1=new Task(Method1), t2 = new Task(Method1), t3 = new Task(Method1);
    Task[] tasks = new Task[] { t1, t2, t3 };
    //等待所有完成
    Task.WaitAll(tasks);
    //等待任意一个完成
    Task.WhenAll(tasks);

    //任务t完成后,调用Method2
    t.ContinueWith(Method2);
}

public void Method1()
{

}

public void Method2(Task t)
{
    Console.WriteLine($"task {t.Id} finished");
}

回调函数

参考资料:
http://blog.csdn.net/friendan/article/details/42586307

异步的几种方法

标签:https   log   get   tail   void   blank   define   turn   www   

原文地址:http://www.cnblogs.com/Lulus/p/7905225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!