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

نام تاپیک: ارور در برنامه نویسی موازی- چند نخی

  1. #1

    Question ارور در برنامه نویسی موازی- چند نخی

    سلام وقت بخیر ، برای تمرین نخ یک کد ساده نوشتم بنظرتون چرا اجرا نمیشه؟
            private void button2_Click(object sender, EventArgs e)        {


    ThreadStart t1 = new ThreadStart(test);
    Thread childThread = new Thread(t1);
    childThread.Start();


    }


    public void test()
    {


    for (int i = 0; i < 1000; i++)
    {
    comboBox1.Items.Add("test");
    }


    }

  2. #2

    نقل قول: ارور در برنامه نویسی موازی- چند نخی

    داخل عکس ارور مشخصه ولی اگر بجای کد comboBox1.Items.Add("test") مثلا کد MessageBox.Show("Hello World!") بزارم اروری نمیده و اجرا میشه...
    چرا این ارور میده؟
    Capture.PNG

  3. #3

    نقل قول: ارور در برنامه نویسی موازی- چند نخی

    داخل یک فروم خارجی خوندم برای رفع ارور از کد زیر استفاده میکردن....
                if (InvokeRequired)                
    {
    this.Invoke(new MethodInvoker(delegate


    {
    //Your code here, like set text box content or get text box contents etc..


    }));
    }
    else
    {
    // Your code here, like set text box content or get text box contents etc..
    // SAME CODE AS ABOVE


    }
    }


    یعنی کلاس من به شکل زیر میشه :
            public void test()        {


    if (InvokeRequired)

    {
    this.Invoke(new MethodInvoker(delegate


    {
    for (int i = 0; i < 10; i++)
    {
    comboBox1.Items.Add("test");
    }


    }));
    }
    else
    {


    }
    }


    کسی میدونه این کد یعنی InvokeRequired چه کاری انجام میده؟ کلاس بالا برای من کار میکنه ولی قسمت else باید چیزی بنویسم؟
    و مهمتر از همه، من میخوام اطلاعات از سورس 3سایت دربیارم،برای گرفتن سورس از http agility pack استفاده کردم و همچنین از ترد برای اینکه فرم برنامم هنگ نکنه...ولی موقع اجرای کد که میخواد چند رشته از بین تگ های سورس سایت دربیاره فرم برنامه هنگ میکنه...چرا هنگ میکنه؟
    آخرین ویرایش به وسیله gachboy : شنبه 17 اردیبهشت 1401 در 15:28 عصر

  4. #4

    نقل قول: ارور در برنامه نویسی موازی- چند نخی

    چون ui برنامه به طور مدام مشغول میشه
    منطق دریافت و استخراخ رو در نخ مجزا انجام بدید و با invoke ظاهر برنامه رو یک بار و یا با فواصل زمانی آپدیت کنید.
    البته

  5. #5

    نقل قول: ارور در برنامه نویسی موازی- چند نخی

    نقل قول نوشته شده توسط gachboy مشاهده تاپیک
    داخل عکس ارور مشخصه ولی اگر بجای کد comboBox1.Items.Add("test") مثلا کد MessageBox.Show("Hello World!") بزارم اروری نمیده و اجرا میشه...
    چرا این ارور میده؟
    Capture.PNG
    سلام
    دوستمون جواب دادن .

    نکته ی تکمیلی اینکه برای دسترسی به هیچ کنترل و یا اعضای زیر مجموعه اش ، نباید کدهای مربوط به اون کنترل (و یا اعضاش) را درون نخ جدیدی استفاده (فراخونی یا مقداردهی) کنید .

    لینک زیر درباره wpf هست اما win form هم خیلی شبیه اش توی این قضیه هست (جواب سومی که با عنوانِ Threading Model in UI شروع میشه) :

    C#‎‎‎ - Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on - Stack Overflow

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

  1. سوال: برنامه نویسی موازی مرتب سازی انتخابی(selection sort)
    نوشته شده توسط mmmmmmmmmb در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 30 مرداد 1393, 16:41 عصر
  2. پاسخ: 0
    آخرین پست: چهارشنبه 28 اسفند 1392, 23:41 عصر
  3. پاسخ: 18
    آخرین پست: دوشنبه 11 شهریور 1392, 15:30 عصر
  4. آموزش: بازی سازی بدون نیاز به برنامه نویسی ( Game Maker )
    نوشته شده توسط alimahsis در بخش طراحی و ساخت بازی‌های کامپیوتری
    پاسخ: 4
    آخرین پست: جمعه 29 اردیبهشت 1391, 00:03 صبح

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

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