我想知道Azure WebJobs SDK是否可以触发异步方法?目前我有一个如下所示的方法:
class Program { static void Main(string[] args) { var host = new JobHost(); host.RunAndBlock(); } public static void ProcessStuff([QueueInput("myqueue")] string msg) { var tsk = ProcessStuffAsync(msg) .ContinueWith(x => HandleAsyncError(x),TaskContinuationOptions.OnlyOnFaulted); tsk.Wait(); } public static async Task ProcessStuffAsync(string msg) { // do some async stuff and await it } // other methods ... }
但是,我想知道我是否可以让JobHost知道要调用我的异步方法?在WebJobs中尝试使用异步/等待,没有大量的文档,如果可以的话,这将是非常好的.
我试图在本地运行它来测试…但WebJobs SDK不支持本地存储模拟器…
更新4/7/2014:维克多的答案是正确的,但我确实想要展示在WebJob中使用异步方法(他们会工作)会看到什么.
对于WebJob中的一个方法,如下所示:
public async static Task ProcessMessageAsync([QueueInput("testq2")] string message) { await Task.Delay(50); Console.WriteLine("Processing Message Async..."); Console.WriteLine(message); }
您将在WebJobs日志中看到以下输出:
running in pid: 6272 Timestamp:4:36:02 PM Parameters bound. Invoking user function. -------- Warning: This asynchronous method will be run synchronously. Processing Message Async... a test message -------- Success