Я пытаюсь быстро преобразовать пару наших вызовов WCF для использования асинхронных методов. Я по-прежнему новичок в использовании async/await в нашем коде (я в первую очередь веб-разработчик) и хочу узнать, дает ли мой подход некоторую выгоду.Является ли мое использование WCF асинк полезным?
В приведенном ниже коде мне все еще нужно вернуть результат вызывающему, поэтому вся операция сама по себе все еще «синхронна» в восприятии, но, похоже, не голодает текущая нить до ожидания, что это то, что я пытаюсь выполнить.
Несмотря на то, что мой вызывающий (в данном случае, главный) не является асинхронным (это не может быть), есть ли какая-либо польза в этом подходе? По сути, все, что я сделал, это использовать ключевые слова async/await и использовать метод Async WCF. Благодарю.
(The console.writelines только для тестирования)
class Program
{
static void Main(string[] args)
{
var result = WcfAsync();
Console.WriteLine(result.Result);
Console.ReadLine();
}
private async static Task<bool> WcfAsync()
{
using (var svc = new EmailVendorService.EmailVendorServiceWCFClient())
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // Current thread ID
try
{
// long running task to vendor API
var result = await svc.ExecuteProgramAsync("SomeProgram", "start");
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // Outputs different thread's ID
return result;
}
catch
{
return false;
}
}
}
}
Кажется очень полезным для меня. –
Yup, если 'ExecuteProgramAsync' действительно асинхронно, это кажется полезным. Боковое примечание: исключение из журнала по крайней мере. Не проглатывайте. –
Да, пожалуйста, проигнорируйте «обработку исключений» :-) –