PDA

View Full Version : گفتگو: کپی کردن فایل های حجیم و ...



system32
چهارشنبه 25 آذر 1388, 16:20 عصر
دوستان سلام:


هنگامی که می خواهم یک فایل با حجم بسیار بالا را کپی کنم برنامم هنگ می کنه و تا وقتی فایل را کپی نکنه از حالت هنگ بیرون نمی یاد. چه راه حلی برای این مشکل وجود داره.

و سوال دومم اینکه چه جوری می توانم یک نوار پیشرفت وضعیت از یک عمل کپی بسازم.

DataMaster
چهارشنبه 25 آذر 1388, 17:22 عصر
1-پروسه رو توی یک Threadاجرا کنید تا Thread اصلی برنامه منتظر کپی شدن نشه
2- شما حجم کل اطلاعاتی رو که میخواهید کپی کنید رو اگر داشته باشید با یه حساب کتاب سرانگشتی و مقدار اطلاعاتی که کپی کردین میتونید اون رو به درصد حساب کنید( ریاضی دوران ابتدایی)

EhsanAvr
چهارشنبه 25 آذر 1388, 20:05 عصر
سلام.
1- از ترید استفاده کنین تا برنامتون هنگ نکنه
2- فایل رو به صورت باینری باز کن،حجم کل فایل رو بدست بیار و یک بایت یک بایت از فایل مورد نظر رو بخون و بریز تو یه فایل دیگه در مقصد تا تموم بشه. مقدار ماکزیمم Progress Bar رو برابر طول فایل قرار بده و به ازای هر بایتی که میخوانی و کپی میکنی یکی به اون اضافه کن.

system32
چهارشنبه 25 آذر 1388, 21:13 عصر
دوست عزیز در خواندن بایت ها مشکلی ندارم ولی چگونه می توانم یکی یکی بایت ها را درون فایل بریزم؟

system32
چهارشنبه 25 آذر 1388, 21:22 عصر
دوست عزیز کد زیر را درون ترید می زارم ولی ارور می ده چرا؟




publicvoid Mycall()
{
File.Copy(openFileDialog1.FileName,textBox2.Text);
byte[] b = File.ReadAllBytes(openFileDialog1.FileName);
progressBar1.Maximum = b.Length;
progressBar1.Minimum = 0;
FileStream s = newFileStream(textBox2.Text, FileMode.Append);
for (int i = 0; i < b.Length; i++)
{
progressBar1.Value = progressBar1.Value + 1;
s.WriteByte(b[i]);
}
}

hakelberfin
پنج شنبه 26 آذر 1388, 00:05 صبح
یک Thread میتونه به عناصری مستقیما دسترسی داشته باشه که توسط خودش تولید شده باشه
OpenDialog1 توسط Thread دیگه ای تولید شده
سعی کن openFileDialog1 , progressBar1
رو تو همین تابع ایجاد کنی

system32
جمعه 27 آذر 1388, 11:25 صبح
دوستان برنامه نویس کپی کردن یک یک بایت ها خیلی زمان بره و عمل کپی را خیلی خیلی طولانی می کنه آیا روش دیگه ای برای انجام عمل کپی و همچنین نمایش پیشرفت وضعیت وجود داره؟

system32
جمعه 27 آذر 1388, 18:16 عصر
دوستان راهی به ذهنشون نمی رسه؟