При использовании потока логично ли использовать делегат async? Например, предположим, что у нас есть служба WCF SOAP, и у нас есть клиентское настольное приложение, которое потребляет службы WCF. В этом приложении мы должны иметь как синхронные, так и асинхронные механизмы, поэтому иногда нам нужно использовать потоки, а иногда и асинхронные задачи. Теперь при условии, что мы должны потреблять службы WCF в потоке, так что мы можем написать нить в двух формах:делегат Async для потока
Thread Worker = new Thread (()=>{
WCFServerClient client = new WCFServiceClient();
var GetData = client.GetData(new GetDataRequest());
});
Thread Worker = new Thread (async()=>{
WCFServerClient client = new WCFServiceClient();
var GetData = await client.GetDataAsync(new GetDataRequest());
});
Какой из них более логично? Я имею в виду, имеет ли смысл вообще идти на второй вариант. Запрашивать это, потому что первое также не влияет на отзывчивость в приложении.
Лучшее решение - использовать 'Task' вместо' Thread': 'Task worker = Task.Run (async() => ...);' –
@StephenCleary: Почему Стефан, с точки зрения задачи лучше. Если вы не возражаете, объясните. (Я получил жадность для информации) – James
Легче получить результаты и исключения. Полное описание [в моем блоге] (http://blog.stephencleary.com/2010/08/various-implementations-of-asynchronous.html). –