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 に知らせることができるかどうか疑問に思っていましたか? Web ジョブで async/await を使用しようとすることに関するドキュメントはそれほど多くありません。
これをローカルで実行してテストしようとしていますが、WebJobs SDK はローカル ストレージ エミュレーターをサポートしていません...
2014 年 4 月 7 日更新: ビクターの答えは正しいですが、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