Mi chiedevo se l'SDK WebJobs di Azure può attivare metodi asincroni? Attualmente ho un metodo che è simile al seguente:Web di Azure - Posso utilizzare i metodi asincroni?
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 ...
}
Tuttavia, mi chiedevo se potessi avere la JobHost sa di chiamare il mio metodo asincrono, invece? Non c'è un sacco di documentazione là fuori sul tentativo di usare async/await in WebJobs, e sarebbe davvero bello se potessi.
Sto cercando di eseguire questo a livello locale per provare ... ma la WebJobs SDK non supporta l'emulatore di archiviazione locale ...
UPDATE 2014/04/07: La risposta di Victor è corretta, ma io volevo mostrare quello che vedrai usando i metodi asincroni in un WebJob (funzionano).
Per un metodo nella WebJob che è simile al seguente:
public async static Task ProcessMessageAsync([QueueInput("testq2")] string message)
{
await Task.Delay(50);
Console.WriteLine("Processing Message Async...");
Console.WriteLine(message);
}
si vedrà il seguente output nel vostro WebJobs log:
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
Perché non ci provi e faccelo sapere? –
@StephenCleary al momento sta lavorando su di esso - volevo solo evitare di configurare tutti gli account di archiviazione/sito Web di Azure e la configurazione se qualcun altro l'avesse già fatto con successo. – ericb
Possibile duplicato di [Come fare Async nella funzione WebJob di Azure] (http://stackoverflow.com/questions/38249919/how-to-do-async-in-azure-webjob-function) –