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

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

  1. #1

    مشکل در استفاده از کامبوباکس در Thread

    سلام و خسته نباشید دوستان بنده دارم از Thread استفاده میکنم برای نمایش اطلاعات. تا برنامه ام هنگ نکنه و سری لود بشه اطلاعاتش. ولی متسفانه با این خطا رو به رو شدم.
    س.png
    این دستور بنده هستش و برای بار اول دارم از Thread استفاده میکنم و اطلاعات زیاد نمیخوام موقع لود هنگ کنه.

    private void setDataSource(DataTable table)
    {
    // Invoke method if required:
    if (this.InvokeRequired)
    {
    this.Invoke(new SetDataSourceDelegate(setDataSource), table);
    }
    else
    {
    //for (int i = 0; i < table.Rows.Count; i++)
    //{
    // int percentage = (i + 1) * 100 / table.Rows.Count;
    // label4.Text = percentage.ToString();
    //}
    dgv1.DataSource = table;
    dgv1.AutoGenerateColumns = false;
    progressBar1.Visible = false;
    }
    }

    void loadTable()
    {

    try
    {
    DataTable dt = new DataTable();
    if (Txt_Search.Text != "")
    {
    switch (Cmb_Search.Text)
    {
    case "شماره سند":
    {
    dt =
    sabtMotovafyGabzPeshAndSanadGabr.Search_SM_SHS_Sho mareSanad(
    Convert.ToDouble(Txt_Search.Text));
    break;
    }
    case "ملیت":
    {
    dt = sabtMotovafyGabzPeshAndSanadGabr.Search_SM_Meleyat (Txt_Search.Text);
    break;
    }
    case "کد ملی":
    {
    break;
    }
    case "شماره شناسنامه":
    {
    break;
    }
    case "وضعیت قبر":
    {
    break;
    }
    case "جنسیت":
    {
    break;
    }
    case "نام و نام خانوادگی":
    {
    break;
    }
    case "نام پدر":
    {
    break;
    }
    case "محل صدور":
    {
    break;
    }
    case "تاریخ تولد":
    {
    break;
    }
    case "تاریخ وفات":
    {
    break;
    }
    case "فاز":
    {
    break;
    }
    case "نام قطعه":
    {
    break;
    }
    case "قطعه":
    {
    break;
    }
    case "ردیف":
    {
    break;
    }
    case "شماره":
    {
    break;
    }
    case "طبقه":
    {
    break;
    }
    case "رزرو":
    {
    break;
    }
    case "شماره گواهی فوت":
    {
    break;
    }
    case "علت فوت":
    {
    break;
    }
    case "نام تحویل گیرنده":
    {
    break;
    }
    case "نسبت متوفی":
    {
    break;
    }
    case "محل وقوع فوت":
    {
    break;
    }
    case "استان محل سکونت":
    {
    break;
    }
    case "شهرستان محل سکونت":
    {
    break;
    }
    case "آدرس محل سکونت":
    {
    break;
    }
    case "بومی/غیر بومی":
    {
    break;
    }
    case "شماره تماس تحویل گیرنده":
    {
    break;
    }
    case "استان محل فوت":
    {
    break;
    }
    case "شهرستان محل فوت":
    {
    break;
    }
    case "آدرس محل فوت":
    {
    break;
    }
    case "وضعیت سند":
    {
    break;
    }
    case "وضعیت پرداخت":
    {
    break;
    }
    case "وضعیت متوفی":
    {
    break;
    }
    case "سند":
    {
    break;
    }
    case "بلوغ":
    {
    break;
    }
    case "از مقصد":
    {
    break;
    }

    case "به مقصد/محل دفن":
    {
    break;
    }
    case "توضیحات":
    {
    break;
    }
    case "نام کاربر ثبت کننده":
    {
    break;
    }
    default:
    {
    break;
    }
    }
    setDataSource(dt);
    progressBar1.Visible = false;
    }
    else if (Txt_Search.Text == "")
    {
    dgv1.DataSource = null;
    progressBar1.Visible = false;
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    private void Txt_Search_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    Log(29);
    progressBar1.Visible = true;
    progressBar1.Style = ProgressBarStyle.Marquee;
    System.Threading.Thread thread =
    new System.Threading.Thread(new System.Threading.ThreadStart(loadTable));
    thread.Start();
    }
    }



    اگه راهی وجود داره ممنون میشم بنده راهنمایی کنید شدیدا نیاز دارم کامبوباکس به کار نمیاد بدون مشکل لود میشه ولی وقتی کامبوباکس میبینه خطا میده

  2. #2

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    دوستان کسی با Thread کار نکرده شدیدا به نمونه سورس با Thread برای جلوگیری از هنگ و لود اطلاعات از دیتابیس نیاز دارم سورس های دیگه امتحان کردم یه سورس خطا نداد به کل برنامه بست تو هنگام جستجو لطفاً یه دستور Thread خوب بدون مشکل سراغ دارید بدید ممنون میشم شدیدا گیر هستم و اطلاعات هم زیاد هستش. یه ستور Thread با استفاده از progressBar که درصد فعالیت هم نشان بده ممنون میشم. یه نمونه دارید در اختیارم قرار بدید ممنون میشم با تشکر نحوه جستجو و نمایش بنده با با Combobox که عنوان جستجو رو انتخاب میکنم و توسط کادر متن متن وارد و جستجو میکنم.

  3. #3

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    سلام. برای جلوگیری از این خطا میتونید کد زیر رو در کانستراکتور یا فرم لود قرار بدید

    CheckForIllegalCrossThreadCalls = false;

    البته این روش اصولی نیست
    در ترد بهتره از object استفاده نشه و میتونید این کار رو توسط delegate و invoke انجام بدید
    مثال : https://stackoverflow.com/questions/...orker-winforms
    اگر اشتباه نکنم در دات نت 4.5 به بعد هم میتونید از Func و Action و Async / Await استفاده کنید که سطح انتزاعی بالاتری دارند
    در ضمن BackgroundWorker رو هم فراموش نکنید

  4. #4
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

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

  5. #5

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    نقل قول نوشته شده توسط davidrobert مشاهده تاپیک
    سلام و خسته نباشید دوستان بنده دارم از Thread استفاده میکنم برای نمایش اطلاعات. تا برنامه ام هنگ نکنه و سری لود بشه اطلاعاتش. ولی متسفانه با این خطا رو به رو شدم.
    س.png
    این دستور بنده هستش و برای بار اول دارم از Thread استفاده میکنم و اطلاعات زیاد نمیخوام موقع لود هنگ کنه.

    private void setDataSource(DataTable table)
    {
    // Invoke method if required:
    if (this.InvokeRequired)
    {
    this.Invoke(new SetDataSourceDelegate(setDataSource), table);
    }
    else
    {
    //for (int i = 0; i < table.Rows.Count; i++)
    //{
    // int percentage = (i + 1) * 100 / table.Rows.Count;
    // label4.Text = percentage.ToString();
    //}
    dgv1.DataSource = table;
    dgv1.AutoGenerateColumns = false;
    progressBar1.Visible = false;
    }
    }

    void loadTable()
    {

    try
    {
    DataTable dt = new DataTable();
    if (Txt_Search.Text != "")
    {
    switch (Cmb_Search.Text)
    {
    case "شماره سند":
    {
    dt =
    sabtMotovafyGabzPeshAndSanadGabr.Search_SM_SHS_Sho mareSanad(
    Convert.ToDouble(Txt_Search.Text));
    break;
    }
    case "ملیت":
    {
    dt = sabtMotovafyGabzPeshAndSanadGabr.Search_SM_Meleyat (Txt_Search.Text);
    break;
    }
    case "کد ملی":
    {
    break;
    }
    case "شماره شناسنامه":
    {
    break;
    }
    case "وضعیت قبر":
    {
    break;
    }
    case "جنسیت":
    {
    break;
    }
    case "نام و نام خانوادگی":
    {
    break;
    }
    case "نام پدر":
    {
    break;
    }
    case "محل صدور":
    {
    break;
    }
    case "تاریخ تولد":
    {
    break;
    }
    case "تاریخ وفات":
    {
    break;
    }
    case "فاز":
    {
    break;
    }
    case "نام قطعه":
    {
    break;
    }
    case "قطعه":
    {
    break;
    }
    case "ردیف":
    {
    break;
    }
    case "شماره":
    {
    break;
    }
    case "طبقه":
    {
    break;
    }
    case "رزرو":
    {
    break;
    }
    case "شماره گواهی فوت":
    {
    break;
    }
    case "علت فوت":
    {
    break;
    }
    case "نام تحویل گیرنده":
    {
    break;
    }
    case "نسبت متوفی":
    {
    break;
    }
    case "محل وقوع فوت":
    {
    break;
    }
    case "استان محل سکونت":
    {
    break;
    }
    case "شهرستان محل سکونت":
    {
    break;
    }
    case "آدرس محل سکونت":
    {
    break;
    }
    case "بومی/غیر بومی":
    {
    break;
    }
    case "شماره تماس تحویل گیرنده":
    {
    break;
    }
    case "استان محل فوت":
    {
    break;
    }
    case "شهرستان محل فوت":
    {
    break;
    }
    case "آدرس محل فوت":
    {
    break;
    }
    case "وضعیت سند":
    {
    break;
    }
    case "وضعیت پرداخت":
    {
    break;
    }
    case "وضعیت متوفی":
    {
    break;
    }
    case "سند":
    {
    break;
    }
    case "بلوغ":
    {
    break;
    }
    case "از مقصد":
    {
    break;
    }

    case "به مقصد/محل دفن":
    {
    break;
    }
    case "توضیحات":
    {
    break;
    }
    case "نام کاربر ثبت کننده":
    {
    break;
    }
    default:
    {
    break;
    }
    }
    setDataSource(dt);
    progressBar1.Visible = false;
    }
    else if (Txt_Search.Text == "")
    {
    dgv1.DataSource = null;
    progressBar1.Visible = false;
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    private void Txt_Search_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    Log(29);
    progressBar1.Visible = true;
    progressBar1.Style = ProgressBarStyle.Marquee;
    System.Threading.Thread thread =
    new System.Threading.Thread(new System.Threading.ThreadStart(loadTable));
    thread.Start();
    }
    }



    اگه راهی وجود داره ممنون میشم بنده راهنمایی کنید شدیدا نیاز دارم کامبوباکس به کار نمیاد بدون مشکل لود میشه ولی وقتی کامبوباکس میبینه خطا میده
    خوب توی یک worker Thread دیگه که نمی تونید به آبجکتهای ساخته شده توی Main Thread برنامه تون دسترسی داشته باشید بهتره که مقدار آبجکت comboBox را که توی switch دارید تست میکنید را به worker thread ارسال کنید البته باید با تکنیکهای همگام سازی داده ها این کار رانجام بدید البته از کتابخانه های مثل TPL / PLINK هم می تونید استفاده کنید.

  6. #6

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    دوستان بنده مشکل Thread حل کرد 50 درصد ولی موقع دریافت یک دفعه هنگ میکنه
    و این بگم روی سیستم مشتری ام که با برنامه قبلی کار میکنن از حالت مکس استفاده شده یعنی تا برنامه باز میشه همون لحظه 25 هزار اطلاعات نمایش میده ولی وقتی اسکیول به سمت بالا یا پایین میره یه مکس میکنه و بعد اطلاعات نمایش میده این روش به چه صورت اول به تعداد گرید ویو در حال نمایش اطلاعات نمایش میده ولی بعد از حرکت اسکیول ادامه اطلاعات رو میخونه و بعد نمایش میده 25 هزار تا اطلاعات دارم و لازم دارم اول سریع نمایش بده چون تبدیل تاریخ روی اسکیول سرور انجام میدم به همین خارج لود اطلاعات میکشه اگه تاریخ تبدیل نکنم موقع نمایش از سرور ظرف یک یا 6 ثانیه 25 هزار تا اطلاعات نمایش میده ولی وقتی عمل تبدیل تاریخ روی سرور یا خود برنامه انجام بدم باز کلی میکشه 25 هزار تا رو 4 دقیقه کشید لود کنه که اصلا خوب نیست برنامه من تحت شبکه هستش.

  7. #7
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    خب برا تبدیل تاریخ ممکنه الگوریتمون بهینه نباشه. ولی 25 هزار رکورد چیزی نیست چرا باید اینهمه طول بکشه!!! مگه اینکه شبکشون مشکل داشته باشه . تو نرم افزار ما که تو شرکت استفاده میکنیم یه فرمی داریم بالای 55 هزار رکورد رو تو کسری از ثانیه برمیگردونه . اوئنم شبکه داخلیمون وای فای هست و نسبت به کابلی مشکلاتشم خودتون بهتر میدونید.
    در ضمن کاربر همه این 25 هزار رکورد رو یجا میخواد چیکار؟؟ صورت مسئله رو بگید شاید بشه یه روش بهتری پیشنهاد داد. اگه بحث جستجو هست خب برا بار اول که لود میکنی تاریخ هارو نیار و تبدیل نکن. کاربر که مقدار مورد نظر خودشو پیدا کرد مثلا روش کلیک کرد اطلاعات اون سطر رو بخون. (در ضمن اگه برات مقدوره تاریخ رو همونجور عادی ذخیره کن و دیگه مشکل پرهزینه ای مثل تبدیل تاریخ رو نداشته باشی)

  8. #8

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    خب برا تبدیل تاریخ ممکنه الگوریتمون بهینه نباشه. ولی 25 هزار رکورد چیزی نیست چرا باید اینهمه طول بکشه!!! مگه اینکه شبکشون مشکل داشته باشه . تو نرم افزار ما که تو شرکت استفاده میکنیم یه فرمی داریم بالای 55 هزار رکورد رو تو کسری از ثانیه برمیگردونه . اوئنم شبکه داخلیمون وای فای هست و نسبت به کابلی مشکلاتشم خودتون بهتر میدونید.
    در ضمن کاربر همه این 25 هزار رکورد رو یجا میخواد چیکار؟؟ صورت مسئله رو بگید شاید بشه یه روش بهتری پیشنهاد داد. اگه بحث جستجو هست خب برا بار اول که لود میکنی تاریخ هارو نیار و تبدیل نکن. کاربر که مقدار مورد نظر خودشو پیدا کرد مثلا روش کلیک کرد اطلاعات اون سطر رو بخون. (در ضمن اگه برات مقدوره تاریخ رو همونجور عادی ذخیره کن و دیگه مشکل پرهزینه ای مثل تبدیل تاریخ رو نداشته باشی)
    این تست رو روی جفت سیستم خودم گرفتم و همین طور روی سیستم مشتری اسکیول روی سیستم باشه چون از Function استفاده کردم برای تبدیل تاریخ چون تاریخ ها به کل میلادی ذخیره میشن سمت سرور و موقع نمایش تبدیل میشه به شمسی چون گزارش گیری داره و تو گزارش گیری برحسب تاریخ ها هستن گزارش گیری انجام میشه بخاطر همین تاریخ میلادی هستش و به کاربر نمیتوانم تاریخ میلادی نشان بدم بایستی تاریخ برگردانم به شمسی روی خود اسکیول و همین طور روی برنامه هرجفتش خیلی زمانبر هستش ولی طوری باشه وقتی فرم لود شد به اندازه همان گرید اطلاعات بیاد و وقتی اسکرول حرکت کرد ادامه اش بیاد که کاربر متوجه اش نشه بلکه من تو یک ثانیه 25 هزار تا رکورد لود میکنم اگه تبدیل نکنم ولی به این تبدیل نیاز دارم.
    ممنون بابت کمکتان

  9. #9
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    چرا از اول به صورت شمسی ذخیره نکردید؟

  10. #10

    نقل قول: مشکل در استفاده از کامبوباکس در Thread

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    چرا از اول به صورت شمسی ذخیره نکردید؟
    بخاطر گزارش ها که با تاریخ و به صورت های مختلف و با نمودار که فقط تاریخ میلادی رو قبول میکنه به همین خاطر تاریخ شمسی میدم برای جستجو ولی ما بین تاریخ میلادی میگیرده و میاره و یه یکسری محاسبات مثل سن و بلوغ اتوماتیک روی سرور انجام میشه توسط تریگر برای هر ستونی که ثبت میشه یعنی عملیات سن و بلوغ و موارد دیگه من روی برنامه نمینویسم خود اسکیول انجام میده نصف کارها رو روی هر ستون که یا ویرایش میشه یا ذخیره فقط همون ستون جاری توسط خود اسکیول انجام میشه به همین خاطر درصد خطا هم پایین میاد

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

  1. نحوه خاتمه دادن یا استفاده از synchronize در یک thread که از کد sendmessage در آن استفاده شده.
    نوشته شده توسط arash_ebrahimi_nk در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: شنبه 02 شهریور 1392, 15:54 عصر
  2. نحوه استفاده از Thread
    نوشته شده توسط samira6446 در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: چهارشنبه 26 تیر 1392, 11:25 صبح
  3. خطا در هنگام استفاده از Thread
    نوشته شده توسط morteza271 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 06 اردیبهشت 1390, 17:20 عصر
  4. مقاله: Thread در جاوا (قسمت دوم:ایجاد ترد با استفاده از روش بسط کلاس Thread)
    نوشته شده توسط manvaputra در بخش برنامه‌نویسی جاوا
    پاسخ: 0
    آخرین پست: جمعه 29 شهریور 1387, 03:28 صبح
  5. نمايش دو فرم با استفاده از Thread
    نوشته شده توسط yasercomeng در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 14 تیر 1387, 19:15 عصر

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

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