PDA

View Full Version : سوال: در خصوص استفاده از threading و progress bar در هنگام آرشیو کردن



s4lish
دوشنبه 21 مرداد 1392, 14:45 عصر
با سلام
من یک برنامه دارم که اطلاعات یک فولدر رو به زیپ تبدیل میکنه..
قسمت اول رو که در اون هنگام زیپ کردن فولدرهای حجیم با ترد ها کاری کردم که برنامه از کار نیوفته و هنگ نکنه.
ولی می خوام از progress bar ها نیز در برنامه استفاده کنم که زمان تمام شدن ارشیو رو نشون بده.
چکار باید کنم. کدهای من به این شکل ان.

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

Thread MyThread = new Thread(new ThreadStart(MyCallbackFunction));
MyThread.Start();


و تابع مربوطه


public void MyCallbackFunction()
{

using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(@""+textBox1.Text+"");
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.Save(textBox2.Text);
}

}


با این کد ها فولدر مبدا رو به فایل زیپ مقصد تبدیل می کنم بدون هنگ کردن برنامه. حالا چطور از اون بار استفاده کنم ؟!
مرسی

s4lish
دوشنبه 21 مرداد 1392, 23:50 عصر
هیچکس راه حلی سولوشنی چاره ای چیزی به ذهنش نرسید راهنمایی بده ؟

Mahmoud.Afrad
سه شنبه 22 مرداد 1392, 00:04 صبح
باید ببینی ZipFile درصد پیشرفت رو گزارش میده یا نه. اگر گزارش میده بقیه اش کار راحتیه. اول باید مطمئن بشی که کمپوننت این قابلیت رو داره.

مهرداد صفا
سه شنبه 22 مرداد 1392, 00:08 صبح
با سلام.
اولین مشکلی که وجود دارد این است که ظاهرا متود save که شما از آن استفاده می کنید به صورت async اجرا نمیشود (در غیر این صورت لطفا بیشتر توضیح بدهید).
قبل از هر جیز ما باید به یک طریقی از پیشرفت کار (progress) با خبر شویم و بعد این میزان را به کاربر نمایش دهیم.