コード例 #1
0
    public void List(string path, CancellableProgress progress, Action <ExternalContentEntry> success, Action <Exception> failure)
    {
        ExternalContentEntry entry = default(ExternalContentEntry);
        Exception            e     = default(Exception);

        ThreadPool.QueueUserWorkItem(delegate
        {
            try
            {
                InitializeFilesystemAccess();
                string internalPath = ToInternalPath(path);
                entry = GetDirectoryEntry(internalPath, scanContents: true);
                Dispatcher.Dispatch(delegate
                {
                    success(entry);
                });
            }
            catch (Exception ex)
            {
                e = ex;
                Dispatcher.Dispatch(delegate
                {
                    failure(e);
                });
            }
        });
    }
コード例 #2
0
    private ExternalContentEntry GetDirectoryEntry(string internalPath, bool scanContents)
    {
        ExternalContentEntry externalContentEntry = new ExternalContentEntry();

        externalContentEntry.Type = ExternalContentType.Directory;
        externalContentEntry.Path = ToExternalPath(internalPath);
        externalContentEntry.Time = new DateTime(1970, 1, 1);
        if (scanContents)
        {
            string[] directories = Directory.GetDirectories(internalPath);
            foreach (string internalPath2 in directories)
            {
                externalContentEntry.ChildEntries.Add(GetDirectoryEntry(internalPath2, scanContents: false));
            }
            directories = Directory.GetFiles(internalPath);
            foreach (string text in directories)
            {
                FileInfo             fileInfo = new FileInfo(text);
                ExternalContentEntry externalContentEntry2 = new ExternalContentEntry();
                externalContentEntry2.Type = ExternalContentManager.ExtensionToType(Path.GetExtension(text));
                externalContentEntry2.Path = ToExternalPath(text);
                externalContentEntry2.Size = fileInfo.Length;
                externalContentEntry2.Time = fileInfo.CreationTime;
                externalContentEntry.ChildEntries.Add(externalContentEntry2);
            }
        }
        return(externalContentEntry);
    }