Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation asynchrone pour une application UWP

Sujet résolu
    22 mai 2020 à 15:57:17

    Bonjour, j'essaye de créer une fonction qui s'exécute de manière asynchrone, sans bloquer l'UI. Je suis donc ce tutoriel : 

    https://docs.microsoft.com/fr-fr/windows/uwp/cpp-and-winrt-apis/concurrency-2

    voici donc la classe que j'ai créée :

    // .h
    	class Client
    	{
    	public:
    		Client();
    		~Client();
    
    		winrt::Windows::Foundation::IAsyncAction loginAsync();
    
    	private:
    		winrt::Windows::Web::Http::HttpClient m_httpClient;
    		winrt::Windows::Networking::Sockets::MessageWebSocket m_webSocket;
    	};
    
    // .cpp
    	IAsyncAction Client::loginAsync() // ICI
    	{
    		co_await resume_background();
    
    		winrt::Windows::Web::Http::HttpResponseMessage httpResponseMessage;
    		hstring httpResponseBody;
    
    		try
    		{
    			httpResponseMessage = co_await m_httpClient.GetAsync(Endpoints::GetGateway());
    			httpResponseMessage.EnsureSuccessStatusCode();
    			httpResponseBody = co_await httpResponseMessage.Content().ReadAsStringAsync();
    		}
    		catch (hresult_error const& ex)
    		{
    			winrt::Windows::UI::Popups::MessageDialog(ex.message()).ShowAsync();
    		}
    
    		hstring gatewayUrl = winrt::Windows::Data::Json::JsonObject::Parse(httpResponseBody).GetNamedString(L"url");
    
    		winrt::Windows::UI::Popups::MessageDialog(gatewayUrl).ShowAsync();
    	}
    

    Mais lorsque j'ajoute un seul "co_await" à l'intérieur de la fonction, l'erreur suivante apparaît à la ligne indiquée dans le fichier cpp :

    Erreur (active)	E0135	class "std::experimental::coroutine_traits<winrt::Windows::Foundation::IAsyncAction, DiscordClient::Client *>" n'a pas de membre "promise_type"

    Je n'ai trouvé cette erreur mentionnée nulle part, que ce soit sur les forums, ou sur la documentation de microsoft. Quelqu'un aurait-il une idée qui pourrait m'aider, je suis bloqué dessus depuis un petit bout de temps ? Merci d'avance.

    -
    Edité par Jacques, oui 22 mai 2020 à 15:58:00

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2020 à 17:32:35

      Avez-vous ajouté le flag "/await" ? Comme l'indique le manuel suivant :

      https://luncliff.github.io/coroutine/ppt/[Eng]ExploringTheCppCoroutine.pdf

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      Programmation asynchrone pour une application UWP

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown