WPF 多線程處理(3)


 

 

 

 

首先我們需要幾個屬性來保存取得的數據,因為在其他的線程中是不能讀取控件的值.

        private string folderPath;
        private string[] files;
        private List<object> listItem;
View Code

 

再申明三個委托來分別執行這些數據,獲取路徑后讀取路徑下所有子文件, 更新到listbox上, 然后就是處理processBar.

        private Thread UpdateList = null;
        private Thread UpdateFolder = null;
        private Thread UpdatePBar = null;

        private delegate void UpdateListUI(object ob);
        private delegate void UpdateFolderPath(string path);
        private delegate void UpdatePBarUI(object obj);
View Code

 

然后注冊事件:

        public MainWindow()
        {
            listItem = new List<object>();

            InitializeComponent();

            this.MouseDown+=(s,e)=>{
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    this.Cursor = System.Windows.Input.Cursors.Cross;
                    this.DragMove();
                }
            };
            this.MouseUp += (s, e) => {
                this.Cursor = System.Windows.Input.Cursors.Arrow;
            };

            btn_Top.Click += (s, e) => {
                if (this.Topmost == true)
                {
                    this.Topmost = false;
                }
                else
                {
                    this.Topmost = true;
                }
            };

            btn_Min.Click += (s, e) => {
                this.WindowState = WindowState.Minimized;
            };

            btn_Close.Click += (s, e) =>
            {
                this.Close();
            };

            btn_Broswer.Click += (s, e) => {

                FolderBrowserDialog fbd = new FolderBrowserDialog();
                fbd.RootFolder = System.Environment.SpecialFolder.DesktopDirectory;
                fbd.ShowDialog();
                StartBrowser(fbd.SelectedPath);
            };

            btn_Start.Click += (s, e) => {
                UpdateList = new Thread(DoWork);
                if (UpdateList.ThreadState == ThreadState.Running)
                {
                    UpdateList.Abort();
                }
                UpdateList.Start();
            };

            this.listbox1.SelectionChanged += (s, e) => {
                var lbi = this.listbox1.SelectedItem;
                View view = new View(lbi);
                view.ShowDialog();
            };

            this.Closing += (s, e) => {
                StopWork();
            };
        }
View Code

 

下一篇:WPF 多線程處理(4)
上一篇:WPF 多線程處理(2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM