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

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

  1. #1

    مشکل با Datagirdview در زمان استفاده از thread

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


    public void Form1_Load(object sender, EventArgs e)
    {


    fildatagridview();

    timer2.Enabled = true;
    openport();

    outdortype = Properties.Settings.Default.outdortype;

    }




    بعد تو برنامه یک فنکشن دارم که اطلاعات را میخونه اینطوری


    public void fildatagridview()
    {
    dataGridView1.RowsDefaultCellStyle.BackColor = Color.Khaki;
    dataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.LemonChiffon;
    SqlConnection c = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30");
    SqlDataAdapter a = new SqlDataAdapter(" Select id AS [ردیف] , TruckNo As[نمبر موتر] , Weightfull as [وزن پر] , WeightEmpy as [وزن خالی] , Netweight as [وزن خالص] , Goods as [نوع کالا] , Customername as [مشتری] , Barnama as [شماره بارنامه] , origin as [مبدا] , Destination as [مقصد] , Trucktype as [نام موتر], operator as [اپراتور] , datefull as [تاریخ و ساعت پر] , dateempy as [تاریخ و ساعت خالی] ,datefullmiladi as [تاریخ پر میلادی] ,weighttype as [نوع وزن گیری] , towzintype as [نوع توزین] from Weight order by id desc", c);
    DataTable t = new DataTable();
    a.Fill(t);
    dataGridView1.DataSource = t;


    }


    بعد اومدم اون Filldatagirdview را توسط یک ترید صدا زدم که بقیه زود تر اجرا بشه اینجوری


    public void Form1_Load(object sender, EventArgs e)
    {



    Thread fill = new Thread(fildatagridview);
    fill.Start();
    timer2.Enabled = true;
    openport();

    outdortype = Properties.Settings.Default.outdortype;

    }


    اما زمانی که ترید اجرا میشه در قسمت
    a.Fill(t); 
    این ایرور را میده
    Cross-thread operation not valid: Control 'dataGridView1' accessed from a thread other than the thread it was created on.

    نفهمیدم مشکلش چیه منتظر پاسخ تان هستم تشکر

  2. #2
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

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

    خب برای اینکه a.Fill را باید توی DELEGATE بندازی

  3. #3
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

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

    این برای این هست که پست رو کامل نمیخونید.
    توی اون تاپیک اگر دقت کنید گفتم Control.Invoke

  4. #4

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

    نقل قول نوشته شده توسط zayens مشاهده تاپیک
    خب برای اینکه a.Fill را باید توی DELEGATE بندازی
    چیجوری میشه یه مثال بزاری

  5. #5
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    تهران - بهارستان
    پست
    591

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

    اینجوری
    this.Invoke((MethodInvoker)delegate() { a.Fill(t);});

  6. #6
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

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

    برای method های static از reference استفاده نکنید.
    this.Invoke

    باید بشود:
    Control.Invoke

  7. #7

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

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    برای method های static از reference استفاده نکنید.
    this.Invoke

    باید بشود:
    Control.Invoke
    تفاوتش در چیست ؟

  8. #8
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

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

    نقل قول نوشته شده توسط esagraphic مشاهده تاپیک
    تفاوتش در چیست ؟
    اگر بعدا متود ه Instance ی با همین نام اضافه بشه کدتون از کار میافته.

  9. #9

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

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    اگر بعدا متود ه Instance ی با همین نام اضافه بشه کدتون از کار میافته.
    به جای this از کنترول استفاده میکنم اما ایرور میده یعنی همچین چیزی نداره control.invoke(methodinvoker)

  10. #10
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

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

    پس این رو آزمایش کنید:
    datagrid.Invoke(()=>datagrid.DataSource=t);


    فکر میکنم اشتباه کردم.
    به هر حال بهتره که از reference همون control که گریدتون هست استفاده کنید.

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

  1. سوال: مشکل با padding در زمان استفاده از float ؟
    نوشته شده توسط Fartaj در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: جمعه 06 مرداد 1391, 17:00 عصر
  2. مشکل کاهش سرعت در زمان استفاده از ListView
    نوشته شده توسط مهران رسا در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: دوشنبه 17 مرداد 1390, 11:26 صبح
  3. گفتگو: برنامه‌ی کنترل زمان استفاده‌ی فرزندان ( با استفاده از thread )
    نوشته شده توسط SabaSabouhi در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 26 اردیبهشت 1388, 11:49 صبح
  4. مشکل در استفاده از Thread
    نوشته شده توسط Xcalivorse در بخش C#‎‎
    پاسخ: 8
    آخرین پست: شنبه 16 شهریور 1387, 19:57 عصر
  5. مشکل در استفاده از Thread
    نوشته شده توسط mohsen57 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 9
    آخرین پست: شنبه 17 فروردین 1387, 12:21 عصر

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

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