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) { ; } }
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); }); } }
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) { ; } }
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 }); } } }