0 امتیاز
با سلام

چطور میشه در حین انتقال یا کپی یک فایل نوار وضعیت همراه با درصد نمایش داده بشه ؟!
بسته شده

2 پاسخ

0 امتیاز
 
بهترین پاسخ

سلام

بزار یه طوری مثال بزنم که راحت درک کنی  ببین روشهای مختلف برای استفاداز ترد هست من دو نوع رو میگم

ابتدا

فرضا این یه متد هست و میخاییم کدهاینو اجرا کنیم 
میاییم یه ترد میسازیم و این متد رو میدیدم بهش
 private void Encryption()
        {
//کدها
        }


 public static Thread mythread;
        public static ThreadStart ts;


//اینجا میتونه لود فرم یا محل اجرای کد باشه مثلا باتن اجرایی
 ts = new ThreadStart(Encryption);
 mythread = new Thread(ts);
 mythread.Start();
تو کدهای بالا متد رو دادیم به ترد و اونم اجرایی میکنه


///////////////////////////////////////////////////////

 

 

روش دوم این کدهای پایین رو داخل یه کلاس بریز

 using System;
using System.Collections.Generic;
using System.Threading;
using System.Text;

namespace File_Encryption
{
    class ThreadClass
    {

        public static Thread mythread;
       
        public void StartThread()
        {
           //این showwait
//فرم نمایش برای انتظار اجرای برنامه هست
            mythread = new Thread(new ThreadStart(showwait));
            mythread.Start();
        }

        public void showwait()
        {
            WaitFrm wf = new WaitFrm();
            wf.ShowDialog();
        }

        public void EndThread()
        {
            mythread.Abort();
            
            mythread = null;
        }
    }
}

یه نمونه از کلاس توی فرم مربوطه میسازیم

 ThreadClass threadin = new ThreadClass();

بعد تو کدی که قرار اجرا بشه اینو میزاریم یعنی thread
شروع بشه 
 threadin.StartThread();

و انتهای کد اجرایی اینو میزاریم
  threadin.EndThread();

در این زمان اون فرم انتظار نمایش داده میشه تا دستور اجرا بشه

روش دوم این شکلی میشه

 

البته برای بهتر شده اجرای برنامه معمولا کدی مینویسن که موس رو به حالت اسندبای در میاره و پس از خاتمه اجر عای دمیشه

Cursor.Current = Cursors.WaitCursor;

// اجرای کدها

// Sپایان
Cursor.Current = Cursors.Default;

 

توسط (7,164 امتیاز) 4 7 141
0 امتیاز

سلام 

بهترین راه یادگیری و استفاده از نوار پیشرفت استفاده از ترد و بک گراند ورکر هستش با این 2تا میتونی عملیات رو کنترل کنید

این متد کپی و نوار پیشرفت هستش
public delegate void ProgressChangeDelegate(double Persentage, ref bool Cancel);
    public delegate void Completedelegate();

    class CustomFileCopier
    {
        public CustomFileCopier(string Source, string Dest)
        {
            this.SourceFilePath = Source;
            this.DestFilePath = Dest;

            OnProgressChanged += delegate { };
            OnComplete += delegate { };
        }

        public void Copy()
        {
            byte[] buffer = new byte[1024 * 1024]; // 1MB buffer
            bool cancelFlag = false;

            using (FileStream source = new FileStream(SourceFilePath, FileMode.Open, FileAccess.Read))
            {
                long fileLength = source.Length;
                using (FileStream dest = new FileStream(DestFilePath, FileMode.CreateNew, FileAccess.Write))
                {
                    long totalBytes = 0;
                    int currentBlockSize = 0;

                    while ((currentBlockSize = source.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        totalBytes += currentBlockSize;
                        double persentage = (double)totalBytes * 100.0 / fileLength;

                        dest.Write(buffer, 0, currentBlockSize);

                        cancelFlag = false;
                        OnProgressChanged(persentage, ref cancelFlag);

                        if (cancelFlag == true)
                        {
                            // Delete dest file here
                            break;
                        }
                    }
                }
            }

            OnComplete();
        }

        public string SourceFilePath { get; set; }
        public string DestFilePath { get; set; }

        public event ProgressChangeDelegate OnProgressChanged;
        public event Completedelegate OnComplete;
    }

 

 

همچنین بهتره اینو ببنید

https://www.codeproject.com/Articles/36647/How-to-copy-files-in-C-with-a-customizable-progres

من از این کد ها چیزی نفهمیدم ، میشه بگین چطور ازش استفاده کنم ؟!
توسط (246 امتیاز) 2 10
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,919 کاربر

دسته بندی ها

...