Пример #1
0
 private void ParseDirectoryRecursive(object path)
 {
     try
     {
         do
         {
             FileInfoDataList ss = ShowSharefile.ReceiveShare();
             if (ss.Name == "")
             {
                 break;
             }
             int    asdf = ss.Name.LastIndexOf(@"\");
             string a    = ss.Name.Substring(0, asdf + 1);
             if (Directory != a)
             {
                 continue;
             }
             ss.Name = ss.Name.Substring(asdf + 1, ss.Name.Length - asdf - 1);
             Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate
             {
                 FileInfoDataList si = ShowSharefile.GetInfo(ss);
                 if (si != null)
                 {
                     FileItemInfo.Add(si);
                 }
                 Thread.Sleep(5);
             });
         } while (true);
     }
     catch (Exception)
     {
         ;
     }
 }
Пример #2
0
        private void Show_Root(ObservableCollection <FileInfoDataList> list, bool first_execution)
        {
            FileInfoDataList sh = new FileInfoDataList();

            foreach (var item in _sh.SharePath.Keys)
            {
                Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate
                {
                    sh.Name     = item;
                    sh.IsFolder = true;
                    sh.Size     = null;
                    sh          = ShowSharefile.GetInfo(sh);
                    if (first_execution)
                    {
                        Root_Name.Add(item);
                    }
                    list.Add(sh);
                });
            }
        }
Пример #3
0
        private void GetDirList(string strBaseDir, ObservableCollection <FileInfoDataList> list)
        {
            try
            {
                DirectoryInfo   di    = new DirectoryInfo(strBaseDir);
                DirectoryInfo[] diA   = di.GetDirectories();
                FileInfo[]      files = di.GetFiles();

                foreach (var item in files)
                {
                    Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate
                    {
                        FileInfoDataList sh = new FileInfoDataList();
                        sh.Name             = item.Name;
                        sh.IsFolder         = false;
                        sh.Size             = null;
                        sh = ShowSharefile.GetInfo(sh);
                        list.Add(sh);
                    });
                }
                foreach (var item in diA)
                {
                    Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate
                    {
                        FileInfoDataList sh = new FileInfoDataList();
                        sh.Name             = item.Name;
                        sh.IsFolder         = true;
                        sh.Size             = null;
                        sh = ShowSharefile.GetInfo(sh);
                        list.Add(sh);
                    });
                }
            }
            catch (Exception)
            {
                ;
            }
        }
Пример #4
0
        private void OnSearch(object obj)
        {
            Islist = false;

            if (_preSearchTime == null)
            {
                _preSearchTime = DateTime.Now;
            }
            else
            {
                var now      = DateTime.Now;
                var spanTime = now - _preSearchTime;
                if (spanTime < _elapsedTime)
                {
                    MessageBox.Show(string.Format("每次搜索间隔不能超过{0}秒", _elapsedTime.Seconds.ToString()));
                    return;
                }
                else
                {
                    _preSearchTime = DateTime.Now;
                }
            }
            IsBusy_Main = true;
            try
            {
                List <string> nameList = FileName.Split(' ').ToList();
                nameList.RemoveAll(new Predicate <string>(T => T == string.Empty));

                Task <List <FileInfoData> > task = _client.SearchFileAsync(nameList, true);
                FileItemInfo.Clear();
                if (_ctsSearch != null)
                {
                    if (!_ctsSearch.Token.CanBeCanceled)
                    {
                        _ctsSearch.Cancel();
                    }
                }
                task.ContinueWith(T =>
                {
                    ThreadPool.QueueUserWorkItem(delegate
                    {
                        IsBusy_Main = false;
                        if (T.Result != null)
                        {
                            _ctsSearch    = new CancellationTokenSource();
                            Task listTask = new Task(() =>
                            {
                                foreach (var item in T.Result)
                                {
                                    try
                                    {
                                        Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                                                              (ThreadStart) delegate
                                        {
                                            FileInfoDataList f = new FileInfoDataList(item);
                                            f = ShowSharefile.GetInfo(f);
                                            if (item != null)
                                            {
                                                FileItemInfo.Add(f);
                                            }
                                            Thread.Sleep(30);
                                        });
                                    }
                                    catch (Exception)
                                    {
                                        //throw;
                                    }
                                }
                            }, _ctsSearch.Token);
                            listTask.Start();
                        }
                    });
                });
            }
            catch (Exception e)
            {
                if (ErrorOccur != null)
                {
                    ErrorOccur(this, new ModelEventArgs(ModelEventType.Exception)
                    {
                        ModelException = e
                    });
                }
            }
        }