PDA

View Full Version : تعدیل زمان لود یک فرم



saed2006
دوشنبه 27 اردیبهشت 1389, 12:38 عصر
فرم اصلی برنامه باید یه سری نقشه رو هنگام لود خودش نمایش بده
لود شدن نقشه ها و نمایش انها زمان بر هست و این باعث میشه وقتی کابر فرم رو لود کرد مقداری زمان که اصلا قابل تحمل نیست بر کاربر تحمیل بشه راهی یا ترفندی که بشه این زمان رو تقسیم یا تعدیل کزد هست؟

hojjatshariffam
دوشنبه 27 اردیبهشت 1389, 13:08 عصر
می تونی از ترید (نخ) استفاده کنی

saed2006
دوشنبه 27 اردیبهشت 1389, 13:14 عصر
می تونی از ترید (نخ) استفاده کنی

لود اولیه تغیراتی در کنترل های روی فرم انجام میده پس نمیتونم اون رو با ترد جدیدی ایجاد کنم

taghvajou
دوشنبه 27 اردیبهشت 1389, 14:00 عصر
آیا اون نقشه ها تو پایگاه داده اند یا رو هارد؟

saed2006
دوشنبه 27 اردیبهشت 1389, 17:04 عصر
روی هارد ولی بلا خره زمان لودشون زیاده

Peyman.Gh
دوشنبه 27 اردیبهشت 1389, 17:49 عصر
فرم اصلی برنامه باید یه سری نقشه رو هنگام لود خودش نمایش بده
لود شدن نقشه ها و نمایش انها زمان بر هست و این باعث میشه وقتی کابر فرم رو لود کرد مقداری زمان که اصلا قابل تحمل نیست بر کاربر تحمیل بشه راهی یا ترفندی که بشه این زمان رو تقسیم یا تعدیل کزد هست؟

private void Form1_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds (5));
}

saed2006
دوشنبه 27 اردیبهشت 1389, 17:59 عصر
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds (5));
}

نقش این کد چیه؟

Peyman.Gh
دوشنبه 27 اردیبهشت 1389, 18:06 عصر
نقش این کد چیه؟
موجب تاخیر 5 ثانیه ای میشود و بعد از 5 ثانیه فرم شما نمایش داده میشود.

System.Threading.Thread.Sleep(TimeSpan.FromSeconds (5));
زمان آن میتواند بر حسب میلی ثانیه , ثانیه ، دقیقه ,ساعت و روز باشد.
موفق باشید.

Saeed.Masoumi
دوشنبه 27 اردیبهشت 1389, 20:11 عصر
لود اولیه تغیراتی در کنترل های روی فرم انجام میده پس نمیتونم اون رو با ترد جدیدی ایجاد کنم
سلام
خوب دوست عزیز بارها گفته شده برای تغییر در UI با استفاده از ترید باید از خاصیت

ReportProgress از کنترل BackgroundWorker استفاده شود.

taghvajou
سه شنبه 28 اردیبهشت 1389, 03:25 صبح
لود اولیه تغیراتی در کنترل های روی فرم انجام میده پس نمیتونم اون رو با ترد جدیدی ایجاد کنم

از ترد استفاده کن و متد اپلیکیشن دو اونتز رو هم اجرا کن

taghvajou
سه شنبه 28 اردیبهشت 1389, 03:26 صبح
تعداد دفعاتی که برنامه ات باز و بسته میشه زیاده؟

saed2006
سه شنبه 28 اردیبهشت 1389, 08:35 صبح
تعداد دفعاتی که برنامه ات باز و بسته میشه زیاده؟

نه یک بار باز و یک بار بسته میشه

saed2006
سه شنبه 28 اردیبهشت 1389, 08:36 صبح
سلام
خوب دوست عزیز بارها گفته شده برای تغییر در UI با استفاده از ترید باید از خاصیت

ReportProgress از کنترل BackgroundWorker استفاده شود.

ReportProgress رو فعال کردم
Controls created on one thread cannot be parented to a control on a different thread.

saed2006
سه شنبه 28 اردیبهشت 1389, 08:42 صبح
موجب تاخیر 5 ثانیه ای میشود و بعد از 5 ثانیه فرم شما نمایش داده میشود.

System.Threading.Thread.Sleep(TimeSpan.FromSeconds (5));
زمان آن میتواند بر حسب میلی ثانیه , ثانیه ، دقیقه ,ساعت و روز باشد.
موفق باشید.

خب این کد قبل یا بعد از پردازش زمان بر باشه؟
من قبلش گذاشتم ولی فرم نمایش داده میشه + 5 ثانیه زمان اضافی

Saeed.Masoumi
سه شنبه 28 اردیبهشت 1389, 08:49 صبح
ReportProgress رو فعال کردم
Controls created on one thread cannot be parented to a control on a different thread.
دوست عزیز
تنها فعال کردن کامل نست بلکه باید برای تغییر در UI از تابع OnProgressChanged (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.onprogressc hanged.aspx) , ... استفاده کنید.توی همین فروم بگردید کمکتون می کنه.

taghvajou
سه شنبه 28 اردیبهشت 1389, 11:38 صبح
این روشها به ذهنم میرسه
1- عکس رو به قطعات کوچیک ذخیره کن و تو ابعاد کوچیک هم لود کن و به جای استفاده از یه پیکچر باکس برای نمایش از چند تا که کنار هم چیده شدند استفاده کن و جدا جدا لودشون کن و بین هر کدومشون، دو اونت کن

2- یه تصویر کوچیکتر و با کیفیت پایین تر تهیه کن و اول اون رو نشون کاربر بده نه اصل عکس رو! بعد با در اختیار قراردادن امکان انتخاب کادر مورد نظرش و زوم فقط اون قسمت مورد نیازکاربر رو لود کن.

3- ترکیب این دو روش