Как использовать асинхронные с Visual Studio 2010 и.NET 4.0?
Я хочу добавить асинхронную поддержку в текущий проект VS 2010 .NET 4.0 C#
Я нашел:
- Visual Studio Async CTP - http://www.microsoft.com/en-us/download/details.aspx?id=9983
- Microsoft.Bcl.Async - https://nuget.org/packages/Microsoft.Bcl.Async
Я даже не понимаю реальной разницы между ними.
Я установил оба. Visual Studio Async CTP (версия 3), Microsoft.Bcl и Microsoft.Bcl.Async. (также используется для запуска tools\portable-net40+sl4+win8+wp71\install.ps1
в Microsoft.Bcl)
И до сих пор не вижу никакого эффекта. Та же ошибка для
public async Task<CommResponse>
->
Error 37 The type or namespace name 'async' could not be found (are you missing a using directive or an assembly reference?)
Так реально ли, как мне использовать этот материал?
2 ответа
Я не думаю, что вы должны это делать. Версия async/await для Visual Studio 2010 - это скорее предварительный просмотр, чем все остальное. Если вы хотите использовать этот код в реальном, производственном уровне, вам определенно следует перейти на Visual Studio 2012 (или 2013, если вы можете немного подождать).
Если вам не нужно это в реальном производственном коде, который по какой-то причине требует Visual Studio Pro, и вы просто играете, вы можете использовать Visual Studio 2012 Express.
Я работаю над чем-то похожим (я пишу RestApiLibrary в VS2010, который я позаимствовал из проекта VS2017) и нашел следующий URL полезным.
https://code.msdn.microsoft.com/Introduction-to-HttpClient-4a2d9cee
Главное, что помогло было:
// Send a request asynchronously continue when complete
client.GetAsync(_address).ContinueWith(
(requestTask) =>
{
// Get HTTP response from completed task.
HttpResponseMessage response = requestTask.Result;
// Check that response was successful or throw exception
response.EnsureSuccessStatusCode();
Метод ContinueWith и свойство.Result, казалось, были ключом (своего рода использованием) асинхронной функции в VS2010. Обратите внимание, я сомневаюсь, что это ведет себя традиционным асинхронным способом, но по крайней мере таким образом вы можете использовать асинхронные методы в VS2010.
Надеюсь это поможет!