Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure WebJob和实例异步方法_C#_Delegates_Async Await_Azure Webjobs - Fatal编程技术网

C# Azure WebJob和实例异步方法

C# Azure WebJob和实例异步方法,c#,delegates,async-await,azure-webjobs,C#,Delegates,Async Await,Azure Webjobs,我想在azure web作业中使用依赖项注入。为此,我必须将类和方法设置为非静态: public class Functions { [NoAutomaticTrigger] public async Task GetDriversAsync(TextWriter logger) { } [NoAutomaticTrigger] public void Test()

我想在azure web作业中使用依赖项注入。为此,我必须将类和方法设置为非静态:

   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);
    }
}
使用synchronous方法,它工作正常,通过尝试执行Actionf.GetDriversAsync.method,我得到一个编译错误:

无法将类型“方法”转换为“操作”


如何正确写入该行?

使用普通同步方法。 如果深入研究,您会发现主机异步调用这些方法。或者可以调用CallAsync来等待任务

如果我找到了正确的方法,您就不必担心您的方法会被异步/等待方式调用

所以不要把你的方法付诸行动。相反

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

很有效,谢谢。但为什么我们不创建函数的实例呢?@OlegSh查看executor。它创建实例。