نمایش نتایج 1 تا 13 از 13

نام تاپیک: استفاده از ترد

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    استفاده از ترد

    با سلام خدمت همه دوستان
    من تو پروژه ام برای لود فرم هایی که سنگین بودند و دیر باز می شدند از لودینگ استفاده کردم. یه کلاس تعریف کردم و جاهای که لازم داشتم start و یا stop کردم. خیلی از وقتها تو سیستم ها مختلف با ارور Thread مواجه می شوم

     private static Thread th;
    //= new Thread(new ThreadStart(showProgressForm));
    public void startProgress()
    {
    th = new Thread(new ThreadStart(showProgressForm));
    th.Name = "first";
    th.Start();

    }

    private static void showProgressForm()
    {
    FrmLoading sForm = new FrmLoading();
    sForm.BringToFront();
    sForm.ShowDialog();
    }

    public void stopProgress()
    {
    if (th != null)
    {
    th.Abort();

    th = null;
    }
    }


    (FrmLoading فرم ساده ای هست یه شکل را نمایش می دهد)
    تو فرم هایی هم سنگین بودند در InitializeComponent ایت ترد را استارد و در تابع لود فرمم این را استاپ کردم.
    مشکل از کجاست ؟؟؟؟؟

  2. #2

    نقل قول: استفاده از ترد

    چه ارروری میده؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: استفاده از ترد

    سلام
    آیا خطایی که می‌گیری مربوط به Cross referencing هست؟

    صبا صبوحی

  4. #4
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: استفاده از ترد

    خیر
    ارور continue میده که تو متن ان نوشته Thread .( و یا خیلی وقت ها هم هنگ می کنه مخصوصا سیستم هایی که سخت افزاریشون پایین تره)
    در ضمن کجا می توانیم مشاهده کنیم که در حال حاضر در حال اجرا هست یا نه

  5. #5
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: استفاده از ترد

    از BackGroundWorker استفاده کنید
    عملیات سنگین در پس زمینه انجام بشه و ترد اصلی برنامه مشغول نباشه

    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += (o, ea) =>
    {
    System.Threading.Thread.Sleep(500);

    کدهای برنامه مثل لود دیتاگراید در اینجا بنویسید


    }));
    };

    worker.RunWorkerCompleted += (o, ea) =>
    {
    بستن فرم انتظار
    };
    نمایش فرم انتظار
    worker.RunWorkerAsync();



  6. #6
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: استفاده از ترد

    نقل قول نوشته شده توسط ali_md110 مشاهده تاپیک
    از BackGroundWorker استفاده کنید
    عملیات سنگین در پس زمینه انجام بشه و ترد اصلی برنامه مشغول نباشه

    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += (o, ea) =>
    {
    System.Threading.Thread.Sleep(500);

    کدهای برنامه مثل لود دیتاگراید در اینجا بنویسید


    }));
    };

    worker.RunWorkerCompleted += (o, ea) =>
    {
    بستن فرم انتظار
    };
    نمایش فرم انتظار
    worker.RunWorkerAsync();


    سلام و با اجازه از zohre66 که وسط بحثشون پریدم

    من تو فورم بکاپ گیری (دیتابیس sql) از perogressBar استفاده کردم با step و ...
    اما هیچ ربطی به عملیات بکاپ نداره ! (یعنی نتونستم به هم مرتبطشون کنم)
    الان ممکن بکاپ تموم بشه (حجم کم) ولی پروگرسبار هنوز پر نشده ! و یا برعکس تو حجم زیاد ... با این روش میشه ردیفش کرد ؟
    .
    .
    .
    و این نمونه ای که گذاشتین ، تا وقتی کل اطلاعات از دینابیس لود نشده تو دیتاگریدویو فورم لود رو نشون میده ؟ (نسبت به مثالی که فرمودین)

  7. #7
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: استفاده از ترد

    بله تا وقتی لود اطلاعات تمام لود نشه فرم متظر بمانید نشون داده میشه
    من از این روش توی پترن MVVM استفاده میکنم

  8. #8
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: استفاده از ترد

    نقل قول نوشته شده توسط ali_md110 مشاهده تاپیک
    بله تا وقتی لود اطلاعات تمام لود نشه فرم متظر بمانید نشون داده میشه
    من از این روش توی پترن MVVM استفاده میکنم
    ممنون و الان می رم سراغ امتحان کردن ...
    و این چیه :
    پترن MVVM ؟

  9. #9
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: استفاده از ترد


  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    یزد
    پست
    279

    نقل قول: استفاده از ترد

    سلام خدمت همه دوستان
    مشکل کد من چیه؟؟ من به خاطر یکسری از دلایل نمیخواستم BackgroundWorker استفاده کنم .

  11. #11

    نقل قول: استفاده از ترد

    سلام
    این Thread پردازش خاصی انجام نمیده ، بنابراین سخت افزار ، قدیمی و ضعیف هم که باشه احتمال زیاد نمیتونه علت این خطا باشه
    لطفا متن کامل ارور رو اینجا بگذارید
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  12. #12
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: استفاده از ترد

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام و با اجازه از zohre66 که وسط بحثشون پریدم

    من تو فورم بکاپ گیری (دیتابیس sql) از perogressBar استفاده کردم با step و ...
    اما هیچ ربطی به عملیات بکاپ نداره ! (یعنی نتونستم به هم مرتبطشون کنم)
    الان ممکن بکاپ تموم بشه (حجم کم) ولی پروگرسبار هنوز پر نشده ! و یا برعکس تو حجم زیاد ... با این روش میشه ردیفش کرد ؟
    .
    .
    .
    و این نمونه ای که گذاشتین ، تا وقتی کل اطلاعات از دینابیس لود نشده تو دیتاگریدویو فورم لود رو نشون میده ؟ (نسبت به مثالی که فرمودین)
    سلام
    دو تا پیش‌نهاد دارم.
    اول این که از یادگیری استفاده کنی. یعنی هر بار که backup می‌گیری زمانش رو نگه‌داری و در نوبت بعدی از اون زمان به عنوان مرجع استفاده کنی.
    با توجه به این که حجم دیتابیس در هر نوبت backup گیری تغییر فاحشی نسبت با بار قبلی نداره ( به شرط backupگیری منظم ) نتیجه چیز قابل قبولی
    خواهد بود.
    و دوم این که بجای progress bar معمولی که باید پر بشه، از اون مدل progressها نشون بده که پر نمی‌شن، دائم دور خودشون می‌چرخن.

    صبا صبوحی

  13. #13
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: استفاده از ترد

    دقیقا میخوام همین کار رو انجام بدم !
    که بجای اون پروگرس معمولی توی خود فرم بکاپ ، از یه پروگرس چرخشی استفاده کنم تو یه فرم (فرم انتظار) ...
    منتها به این قسمت کلا گیر میده :

    }));                };

    worker.RunWorkerCompleted += (o, ea) =>
    {
    بستن فرم انتظار
    };
    نمایش فرم انتظار
    worker.RunWorkerAsync();


    قبلش دستورات نمایش توی گرید ویو رو گذاشتم ...
    ولی میگه که تو رفرنس موجود نیست !
    هم بکگراند ورکر به فرم اضاففه کردم و هم فضای نام رو یوزینگ کردم !

تاپیک های مشابه

  1. سوال: مانیتور کردن CPU با استفاده از ترد
    نوشته شده توسط firoozi90 در بخش C#‎‎
    پاسخ: 0
    آخرین پست: دوشنبه 19 اسفند 1392, 12:22 عصر
  2. پاسخ: 4
    آخرین پست: جمعه 12 مهر 1392, 13:49 عصر
  3. سوال: مشکل با استفاده از ترد ها در برنامه
    نوشته شده توسط senaps در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 01 آبان 1391, 00:44 صبح
  4. جلوگیری از هنگ کردن برنامه با استفاده از ترد ها
    نوشته شده توسط IMANAZADI در بخش C#‎‎
    پاسخ: 11
    آخرین پست: یک شنبه 24 بهمن 1389, 19:52 عصر
  5. ترد - آشنایی با ترد - نحوه بکارگیری در دلفی و ترفندهای استفاده
    نوشته شده توسط آیدا رضایی در بخش برنامه نویسی در Delphi
    پاسخ: 15
    آخرین پست: دوشنبه 29 اسفند 1384, 09:46 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •