Azure WebJob和实例异步方法

时间:2018-01-31 12:29:51

标签: c# delegates async-await azure-webjobs

我想在我的天蓝网络作业中使用依赖注入。为此,我必须将类和方法设为非静态:

   public class Functions
    {
        [NoAutomaticTrigger]
        public async Task GetDriversAsync(TextWriter logger)
        {

        }

        [NoAutomaticTrigger]
        public void Test()
        {
        }
    }

然后我想把它传递给JobHost对象的Call方法。

我尝试这样做:

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        var host = new JobHost(config);

        Functions f = new Functions();

        host.Call(((Action)f.Test).Method);
        host.Call(((Action)f.GetDriversAsync).Method);
    }
}

使用同步方法,它可以正常工作((Action)f.GetDriversAsync).Method我收到编译错误:

  

无法将'method'类型转换为'Action'

如何正确写出该行?

1 个答案:

答案 0 :(得分:1)

使用普通的同步方法。 如果查看source code,您会发现主机异步调用这些方法。或者您可以致电CallAsync等待任务。

如果我找到了正确的executor,您不必担心以async / await方式调用您的方法。

因此,不要将您的方法强制转换为Action。取而代之的是,

host.Call(typeof(Functions).GetMethod("GetDriversAsync"));