50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

خطای oInvoke or BeginInvoke cannot be called در سی شارپ

سلام دوستان خسته نباشید ، من در پروژه م یک Thread به شکل زیر تعریف کردم منتها وقتی از متد Invoke استفاده می کنم با پیغام زیر مواجه میشم . دوستان تا وقتی که برنامه در حال اجراست برنامه به خوبی کار میکنه ولی وقتی برنامه رو میبندم پیغام خطای زیر ظاهر میشه. ممنون میشم راهنمایی کنید .

  private void Form1_Load(object sender, EventArgs e)
        {
            ThreadStart ts = new ThreadStart(show);
            Thread td = new Thread(ts);
            td.Start();
          
        }

   private void show ()
        {
         if (number == 0)
                {
                    toggleSwitch1.Invoke(new Action(() =>
                        {
                            toggleSwitch1.IsOn = true;
                        }));
                   
                }
                else if (number == 1)
                {
                    toggleSwitch1.Invoke(new Action(() =>
                    {
                        toggleSwitch1.IsOn = false;
                    }));

                    
                }
        }
وب سایت توسینسو
پرسیده شده در 1395/08/22 توسط

1 پاسخ

2

سلام دوست عزیز، مشکل اینجا هست که Thread شما زمان بسته شدن فرم متوقف نمیشه و داخل کد Thread می خوایید به کنترل فرمی که دیگه وجود نداره دسترسی داشته باشید، راه حل اینه که قبل از بسته شدن فرم، یعنی رویداد Closing متد Abort رو برای Thread ایجاد شده فراخوانی کنید.

پاسخ در 1395/08/22 توسط

پاسخ شما