none
win8 app中获取本地文件及文件夹时候,出现设置断点跟踪正常,但去掉断点就出现奇怪错误,寻求帮助! RRS feed

  • 问题

  • 获取本地音乐库中的文件夹及文件显示到界面的时候,设置断点一步步跟踪是正常获取到,但如果去掉了断点就会出错,菜鸟寻求高手指点,如果解决?下面是代码

     List<FileInfo> DatailInfo = new List<FileInfo>();

            public List<FileInfo> GetLocalDetailInfo(string strDitroyName)
            {
                GetAllFolder(strDitroyName);
                return DatailInfo;///执行完这里就会出错,一步步跟踪的时候这里DatailInfo可以得到数据,但不设置断点,这里DatailInfo的count是0.这个时候就出现了错误。
            }

    private async void GetAllFolder(string strDitoryName)
            {
                IAsyncOperation<IReadOnlyList<IStorageItem>> istroageItem = null;

               istroageItem = KnownFolders.MusicLibrary.GetItemsAsync();

     IReadOnlyList<IStorageItem> ItemList = istroageItem.GetResults();

                if (ItemList.Count <= 0) return;

                foreach (var item in ItemList)
                {
                    string strName = item.Name;
                    string strPath = item.Path;
                    string strDate = item.DateCreated.ToString("yyyy-MM-dd");
                    string strType = item.Attributes.ToString();

     ulong lSize = (await item.GetBasicPropertiesAsync()).Size;//.GetResults().Size;
                    string strSize = "";

    if (strType.Equals("Directory"))
                    {
                      
                        DatailInfo.Add(new FileInfo()
                        {
                            FileName = strName,
                            FileType = "文件夹",
                            FileSize = "",
                            SmallImageUrl = "ms-appx:///Assets/Images/Icons/folder.png",
                            BigImageUrl = "ms-appx:///Assets/Images/Icons/folder.png",
                            FileUrl = strPath,
                            CreateTime = strDate
                        });
                    }

    }

    }

    下面是错误信息

    2013年4月16日 7:26

答案

  • 谢谢你的回复。自己解决了,之前加上了那些一样的报错,经过再三考虑发现问题出在:我在async事件中操作了UI层,设置了UI界面的listview数据源为这里所得到的数据。解决方法:将async事件中得到的数据返回到UI层,在UI层进行设置数据源就OK,问题解决了。
    2013年4月18日 4:57

全部回复

  • 求教!版主Bob Bao

    2013年4月17日 1:26
  • 我就是想在界面点击一个事件去获取到本地的音乐库中的数据,将返回回来的数据集合显示在我的界面上。

     private void LocalFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)

    {

     List<FileInfo> DataFromLoacl = new List<FileInfo>();

    DataFromLoacl  = GetLocalDetailInfo(string strDitroyName);

    //界面上放了一个Listview名称为loaclList来显示

     loaclList.source = DataFromLoacl  ;

    }

    我这样的思路是不是有问题,望大神指点!

    2013年4月17日 4:05
  • Hi,

    你的问题是方法没有执行完就接着执行所以出错,而用断点的话,因为在那里停了一段时间,那个方法已经执行完了所以不会出错。你需要这样写这句:

     await GetAllFolder(strDitroyName);

    方法上加async,这样执行的时候会等这句结束再继续执行。


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.



    2013年4月17日 10:35
    版主
  • 谢谢你的回复。自己解决了,之前加上了那些一样的报错,经过再三考虑发现问题出在:我在async事件中操作了UI层,设置了UI界面的listview数据源为这里所得到的数据。解决方法:将async事件中得到的数据返回到UI层,在UI层进行设置数据源就OK,问题解决了。
    2013年4月18日 4:57