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

نام تاپیک: مشکل Cross-thread operation not valid

  1. #1

    مشکل Cross-thread operation not valid

    با سلام خدمت اساتید
    من یدونه فرم طراحی کردم که یک picturebox داره و تصویر رو از وبکم میگیرم و در اون نمایش میدم
    بعد با استفاده از رویداد mousewheel اون رو zoom و unzoom می کنم.
    وقتی که چندین بار عمل zoom و unzoom رو می کنم به یکباره برنامه قطع میشه و پیام خطای زیر نمایش داده میشه.

    'Cross-thread operation not valid: Control 'pictureBox1' accessed from a thread other than the thread it was created on.'

    namespace Taradod{
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
    }
    private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
    {
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    if (e.Delta > 0)
    {
    pictureBox1.Width += Convert.ToInt32(pictureBox1.Width * 120 / 1000);
    pictureBox1.Height += Convert.ToInt32(pictureBox1.Height * 120 / 1000);
    }
    else
    {
    pictureBox1.Width -= Convert.ToInt32(pictureBox1.Width * 120 / 1000);
    pictureBox1.Height -= Convert.ToInt32(pictureBox1.Height * 120 / 1000);


    }
    }


    private FilterInfoCollection webcam;
    private VideoCaptureDevice finalframe;







    private void Form2_Load(object sender, EventArgs e)
    {
    webcam = new FilterInfoCollection(FilterCategory.VideoInputDevi ce);
    foreach (FilterInfo vcd in webcam)
    {
    comboBox1.Items.Add(vcd.Name);
    }
    comboBox1.SelectedIndex = 3;
    finalframe = new VideoCaptureDevice(webcam[comboBox1.SelectedIndex].MonikerString);
    finalframe.NewFrame += new NewFrameEventHandler(Finalframe_NewFrame);

    finalframe.Start();
    varibel.finalframestatus = "start";
    }


    private void Finalframe_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
    //خطای رخ داده مربوط به خط پایین است
    pictureBox1.Image= (Bitmap)eventArgs.Frame.Clone();
    }


    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
    if (varibel.finalframestatus =="start")
    {
    varibel.finalframestatus = "";
    finalframe.Stop();

    }
    }


    private void pictureBox1_MouseHover(object sender, EventArgs e)
    {
    pictureBox1.Focus();
    }

    }
    }


    آخرین ویرایش به وسیله apkgames : چهارشنبه 27 دی 1402 در 18:00 عصر

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

    نقل قول: مشکل Cross-thread operation not valid

    مشکل شما به دلیل دسترسی به کنترل pictureBox1 از یک نخ دیگر هست که در آن ایجاد نشده. برای رفع این مشکل، باید از روشهای مناسب برای دسترسی به کنترلها در نخهای متفاوت استفاده کنید.





    private void Finalframe_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
    if (pictureBox1.InvokeRequired)
    {
    pictureBox1.Invoke(new MethodInvoker(delegate
    {
    pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
    }));
    }
    else
    {
    pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
    }
    }

  3. #3

    نقل قول: مشکل Cross-thread operation not valid

    ممنونم از شما ، با راهنمایتان حل شد.

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

  1. سوال: اشکال در حل مشکل Cross-thread operation not valid
    نوشته شده توسط mranderson در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 09 خرداد 1396, 20:06 عصر
  2. خطای Cross-thread operation not valid
    نوشته شده توسط milad.biroonvand در بخش VB.NET
    پاسخ: 1
    آخرین پست: دوشنبه 03 آبان 1395, 11:00 صبح
  3. سوال: Cross Thread Operation not valid
    نوشته شده توسط mmolia در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 15 دی 1393, 23:17 عصر
  4. چرا ارور Cross-thread operation not valid رخ نمیده
    نوشته شده توسط bade saba در بخش C#‎‎
    پاسخ: 11
    آخرین پست: جمعه 02 تیر 1391, 20:24 عصر

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

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