none
使用WebClient类取内容,多次取内容的时候,程序闪退。 RRS feed

  • 问题

  • 我使用WebClient类,去取一个网页的内容,一般是第二次的时候,程序会就报错。部署到手机上的时候,就是闪退。

    我把代码放在这里了。pan.baidu.com/s/11joIR

    希望大家帮帮我。我找了两个多礼拜还是没解决。

    2013年11月4日 14:22

答案

  • 把不必要的capabilities取消勾选之后,在520运行多次,没有出现闪退。

    另外,我想你的闪退问题应该出在定时器触发web请求这块儿,把定时器用后台代理替换试试

    2013年11月5日 4:22
  • 应该也不是后台代理的问题,我仔细看了一下你的代码,你在请求回调方法中应该对e.Error做一定检测:

     void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                if (e.Error == null)
                    using (StreamReader reader = new StreamReader(e.Result))
                    {
                        string contents = reader.ReadToEnd();
                        int begin = contents.ToString().IndexOf("low");
                        int end = contents.ToString().IndexOf("vol");
                        textblock1.Text = contents.ToString().Substring(begin + 5, end - begin - 7);
                        ///////////////////////////////////////////////////////////

    2013年11月7日 3:15

全部回复

  • 把不必要的capabilities取消勾选之后,在520运行多次,没有出现闪退。

    另外,我想你的闪退问题应该出在定时器触发web请求这块儿,把定时器用后台代理替换试试

    2013年11月5日 4:22
  • 怎么把timer用后台代理呀?
    2013年11月6日 8:06
  • 应该也不是后台代理的问题,我仔细看了一下你的代码,你在请求回调方法中应该对e.Error做一定检测:

     void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                if (e.Error == null)
                    using (StreamReader reader = new StreamReader(e.Result))
                    {
                        string contents = reader.ReadToEnd();
                        int begin = contents.ToString().IndexOf("low");
                        int end = contents.ToString().IndexOf("vol");
                        textblock1.Text = contents.ToString().Substring(begin + 5, end - begin - 7);
                        ///////////////////////////////////////////////////////////

    2013年11月7日 3:15
  • 是不是第二次执行webclient的时候,就没有成功的拿到数据。用ERROR判断,只能判断是否拿到数据,还是没办法让程序第二次拿到数据,是这样吗?

    2013年11月13日 5:26