none
LLamadas asincronas a internet RRS feed

  • Pregunta

  • Hola,

    Estoy intentando hacer una aplicacioncilla que entre en una página y extraiga una tabla. Me interesan los datos de la tabla no su formato.

    Para ello estoy usando visto en un ejemplo de rss

    peticion = (HttpWebRequest)HttpWebRequest.Create(http://google.com);
    peticion.BeginGetResponse(DatosObtenidos,null);
    .....
    void DatosObtenidos(IAsyncResult result)
    {
        HttpWebResponse respuesta;
        respuesta = (HttpWebResponse)peticion.EndGetResponse(result);

    Al ser asíncrono e intentar meter este procedimiento en una clase del modelo se ejecuta después de crearse la vista.

     Cual es la necesidad o la ventaja de que el ejemplo sea asíncrono?, En mi caso creoq ue me convendría mas que no lo fuera puesto que al querer solo los datos de la tabla luego los proceso y meto en una lista observable y enumerable. Alquién me podría indicar otro ejemplo en que basarme más adecuado para mi?, lo he buscado pero no me aclaro muy bien.

     Gracias!


    http://wp8xp.blogspot.com.es

    sábado, 26 de enero de 2013 21:17

Respuestas

  • La idea es que tengas el Binding desde el XAML a la propiedad del ViewModel que recoge los datos, que en el ViewModel uses NotifyPropertyChanged al finalizar la carga de los datos para notificar que ha habido modificación de los mismos. Esto hará que se actualice la vista.

    http://msdn.microsoft.com/es-es/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx

    http://jesseliberty.com/2012/06/28/c-5making-inotifypropertychanged-easier/


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS)
    Twitter | @saintwukong

    • Marcado como respuesta Jack_sp8 domingo, 27 de enero de 2013 17:49
    domingo, 27 de enero de 2013 17:45

Todas las respuestas

  • Hola Jack.

    Ten en cuenta que es un entorno táctil y que las recomendaciones abogan por no bloquear la aplicación con un procesado de datos. Imagina que tardara mucho esa llamada porque no tienes conexión o en ese momento va muy lenta. El usuario se vería "atrapado" en un proceso que no sabe cuánto va a durar y mientras tanto no puede seguir interactuando.

    La idea es que realices una carga asíncrona de los datos y los proceses. Mientras tanto, puedes bloquear/ocultar aquellas acciones que no quieras que pueda usar el usuario mientras hasta que no se hayan procesado los datos. De esa forma, consigues que el usuario pueda seguir interactuando con tu aplicación.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS)
    Twitter | @saintwukong

    domingo, 27 de enero de 2013 14:51
  • Hola , si la verdad era lo único que se me ocurría que podía ser sin embargo me obliga a poner el código de esta llamada en el code subyacente del xaml en cuestión que me impide reutilizar este código. Aunque supongo alguna forma habrá de usarlo en fin en este tema estoy algo perdido. 

    Por que ademas dentro del code behind este me fuerza a definir el datacontext dentro de esta llamada asíncrona ¿Si no como puedo hacer para hacer que pinten los resultados de la llamada?. Lo digo porque si necesito mas datos sin ir mas lejos de una view model me es muy complicado enlazar debería de tener 2 data-context en el mismo xaml. y usando un objeto locator para las view model no se como iba a enlazar todo esto.

    ¿Se puede usar referenciar la view model con locator y el resultado de la lista en el xaml.cs, dentro de una referencia dinámica en el App.xaml?,  Por que no veo otra forma de hacerlo. ¿Sería la forma adecuada esta?

    gracias de antemano


    http://wp8xp.blogspot.com.es

    domingo, 27 de enero de 2013 16:45
  • La idea es que tengas el Binding desde el XAML a la propiedad del ViewModel que recoge los datos, que en el ViewModel uses NotifyPropertyChanged al finalizar la carga de los datos para notificar que ha habido modificación de los mismos. Esto hará que se actualice la vista.

    http://msdn.microsoft.com/es-es/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx

    http://jesseliberty.com/2012/06/28/c-5making-inotifypropertychanged-easier/


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS)
    Twitter | @saintwukong

    • Marcado como respuesta Jack_sp8 domingo, 27 de enero de 2013 17:49
    domingo, 27 de enero de 2013 17:45
  • Vaya, si me había liado con el tema de que fuera asíncrono y resulta que era todo mucho más sencillo.

    Pues si me obceque con ello cuando el mecanismo es el de toda la vida, gracias!!!. ;)


    http://wp8xp.blogspot.com.es

    domingo, 27 de enero de 2013 17:49