mono对async/await支持够好吗?

起因

  在qq群里,听到有人说,mono对async/await支持不够好,会有问题.于是做了一个简单的测试.

测试代码

using System;

//因命名空间有些冲突
using httpclient = System.Net.Http;

namespace HttpClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Test();
            Console.ReadKey();
        }

        static async void Test()
        {
            httpclient.HttpClient client = new httpclient.HttpClient();
            string result = await client.GetStringAsync("http://www.qiufengblog.com");
            Console.WriteLine(result);
        }
    }
}

安装mono(windows为例)

  1. 下载地址:http://www.mono-project.com/download/ 有32和64位版本
  2. 下载MSIExtractor.exe,对mono-4.2.3.4-gtksharp-2.12.30-win32-0.msi提取
  3. 找到提取的文件夹路径,添加到系统环境变量path中,编译的时候需要用

用mcs编译程序

    1. 使用命令行进入代码所在的文件目录
   //mcs 是mono的编译器 /r则是引用动态库
   mcs Program.cs /r:System.Net.Http.dll /r:System.Net.Http.Formatting.dll

     

    2.用mono命令运行程序

    //mono.exe 来执行exe
    mono Program.exe       

    3.可以看到mono用async/await是没问题的.

注意

  不管在windows和linux下,要避免在exe所在目录不能有中文.如果有中文的话,会有提示 MONO_EXTERNAL_ENCODINGS

  

秋风 2016-11-02