none
silverlight 异步刷新的问题 RRS feed

  • 问题

  • 用webclient 下载一个xml数据文件。。
    由于xml比较大
    就声名一个委托  delegate void  mydelegate();
                           mydelegate my = new mydelegate(longtimevoid);
                           my(stream)


           public void longtimevoid(Stream stream)
    {
             XElement xm = XElement.load(System.xml.xmlreader.create(stream));
    ....
    }

    为什么执行longtimevoid方法的时候页面会卡死状态。。

    上面是异步执行的哦。  有什么办法解决这样的问题呢 ?
    2009年4月3日 12:39

答案

  • 这个是异步提交的例子,道理应该差不多

    http://dotnet.aspx.cc/article/95e21a06-795f-46f5-952e-77bc31b7538f/read.aspx

    这个是异步下载的例子,不过是beta版的时候做的,正式版可能某些地方要稍作修改,具体未测
    http://dotnet.aspx.cc/article/43a83bc8-48e1-4d7f-9479-ab231af61dfd/read.aspx

    另外要排除你访问的地方的网站不通畅的问题


    孟宪会
    • 已标记为答案 Yi-Lun Luo 2009年4月9日 10:50
    2009年4月4日 10:51
    版主
  • 用webclient 下载一个xml数据文件。。
    由于xml比较大
    就声名一个委托  delegate void  mydelegate();
                           mydelegate my = new mydelegate(longtimevoid);
                           my(stream)


           public void longtimevoid(Stream stream)
    {
             XElement xm = XElement.load(System.xml.xmlreader.create(stream));
    ....
    }

    为什么执行longtimevoid方法的时候页面会卡死状态。。

    上面是异步执行的哦。  有什么办法解决这样的问题呢 ?

    存在卡死状态,是指sl程序内正在运动的Storyboard也不动了么?
    sl的原理跟winform差不多,如果在主线程执行,并等待响应结果才进行操作,也可能出现假死状态.
    在下载大数据量等待响应结果才可以进行下一步操作的时候,我建议先锁定主容器,然后显示下载进度,这样更有助于分析问题来源.
    用WebClient.DownloadStringAsync()下载,请先分析是下载完成之后出现卡死,还是在下载时出现卡死.是否为有效下载.
    • 已标记为答案 Yi-Lun Luo 2009年4月9日 10:50
    2009年4月4日 12:42
    版主

全部回复

  • 急需大家帮忙。。。   谢谢。。
    2009年4月3日 12:40
  • 版主在吗?现在在调试这个东西。希望看到的人指点下。。
    2009年4月3日 12:56
  • 这个是异步提交的例子,道理应该差不多

    http://dotnet.aspx.cc/article/95e21a06-795f-46f5-952e-77bc31b7538f/read.aspx

    这个是异步下载的例子,不过是beta版的时候做的,正式版可能某些地方要稍作修改,具体未测
    http://dotnet.aspx.cc/article/43a83bc8-48e1-4d7f-9479-ab231af61dfd/read.aspx

    另外要排除你访问的地方的网站不通畅的问题


    孟宪会
    • 已标记为答案 Yi-Lun Luo 2009年4月9日 10:50
    2009年4月4日 10:51
    版主
  • 用webclient 下载一个xml数据文件。。
    由于xml比较大
    就声名一个委托  delegate void  mydelegate();
                           mydelegate my = new mydelegate(longtimevoid);
                           my(stream)


           public void longtimevoid(Stream stream)
    {
             XElement xm = XElement.load(System.xml.xmlreader.create(stream));
    ....
    }

    为什么执行longtimevoid方法的时候页面会卡死状态。。

    上面是异步执行的哦。  有什么办法解决这样的问题呢 ?

    存在卡死状态,是指sl程序内正在运动的Storyboard也不动了么?
    sl的原理跟winform差不多,如果在主线程执行,并等待响应结果才进行操作,也可能出现假死状态.
    在下载大数据量等待响应结果才可以进行下一步操作的时候,我建议先锁定主容器,然后显示下载进度,这样更有助于分析问题来源.
    用WebClient.DownloadStringAsync()下载,请先分析是下载完成之后出现卡死,还是在下载时出现卡死.是否为有效下载.
    • 已标记为答案 Yi-Lun Luo 2009年4月9日 10:50
    2009年4月4日 12:42
    版主